| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 741 人关注过本帖
标题:[求助] 循环语句中总是执行不需要的语句,怎么解决?
取消只看楼主 加入收藏
xfree007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:2 
[求助] 循环语句中总是执行不需要的语句,怎么解决?
题目:
从键盘输入一批整数,最后一个数为0,编程找出其中的最大数和最小数,并输出。
(要求:必须用的循环语句,while,do-while,for任选其一)


我自己写的代码:

#include<stdio.h>
main()
{
int max=0,min=0,i;
do
{
printf("Please Enter Number:");
scanf(" %d" ,&i);
if(max<i) max=i;
if(min>i&&i!=0) min=i;
}
while(i);
printf("MAX = %d , MIN = %d" ,max,min);
}

代码完成后,用TC2.0编译,输入正常,比较正常。
如:输入123,456,789,-123,-456,-789后,得到结果MAX = 789,MIN = -789,这是正确的。
但是,如果输入的数只是正数,最后输出的 MIN 就总是等于 0 ,意思就是 0 参与了数据比较。
本来按照题目的意思,0 应该只是作为结束符来使用,不参与比较的。
代码中我已经在这句中:
if(min>i&&i!=0) min=i;
加入了i!=0,但是很奇怪的,最后怎么运行结果MIN都是0

我以为是循环语句选用不正确,但是while,do-while,for都试过一遍,结果依然错误。

请高手帮我改正!!先谢过!
搜索更多相关主题的帖子: 语句 
2007-10-12 22:25
xfree007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-13
收藏
得分:0 
多谢LS,忘记赋值的问题了。

不过如果不赋值,编译有问题,Turbo C 中可以编译,但是DOS版的TC不能编译,能建议下赋值弄个什么值合适

2007年9月3日开始学C,请大家多多关照。。。。
2007-10-12 22:37
xfree007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-13
收藏
得分:0 
再次感谢2楼

我又想了一下,其实MAX,MIN两个变量赋值都是错误的,应该把第一次输入的值赋给它们才对

#include<stdio.h>
main()
{
int max,min,i;
printf("Please Enter Number:");
scanf(" %d" ,&i);
max=i;min=i;
do
{
printf("Please Enter Number:");
scanf(" %d" ,&i);
if(max<i) max=i;
if(min>i&&i!=0) min=i;
}
while(i);
printf("MAX = %d , MIN = %d" ,max,min);
}


4楼的我看过,感觉没必要这么麻烦,如果第一次就输入结束符0,就让MAX和MIN都等于0算了,没必要报错的(虽然报错更严谨)。

同时也感谢4楼的,虽然我更喜欢2楼的启发式指导。。。。。

再次感谢 死了都要C

2007年9月3日开始学C,请大家多多关照。。。。
2007-10-13 09:57
快速回复:[求助] 循环语句中总是执行不需要的语句,怎么解决?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016494 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved