| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1458 人关注过本帖
标题:为什么会出现死循环?
只看楼主 加入收藏
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:25 
为什么会出现死循环?

题目是十个评委给选手打分,去掉一个最高分和最低分,求选手分数,如果输入全是数字,程序可正确运行,为什么输入字母(错误操作)就会死循环?(环境:winxp vc60)

void main()
{

int i;
int mymax = 0;
int mymin = 100;
int a[10];
int result = 0;
for (i = 0; i <= 9; i++)
{
printf("请%d号评委打分\n", i + 1);
scanf("%d", &a[i]);
while((a[i] <= 0) || (a[i] > 100))
{
printf("分数必须在1-100之间,请重新打分\n");
scanf("%d", &a[i]); //在这里,如果我输入字母就不行了

}
mymax > a[i]? mymax: mymax = a[i];
mymin < a[i]? mymin: mymin = a[i];
result += a[i];
}
result = result - mymax - mymin;
printf("选手最后得分:%d", result);

}

请问为什么?

搜索更多相关主题的帖子: 字母 
2006-06-02 10:17
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
if((a[i] &lt;= 0) || (a[i] &gt; 100))

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-02 10:23
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
啊.不对.是我理解错误!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-02 10:25
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
我当然知道了,但是如果输入字母,字母的整数值是很大很大的数,完全可以再次提示我输入啊,为什么程序就一直打印         分数必须在1-100之间,请重新打分    不停了,这是为啥?

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-06-02 10:29
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用金为床兮银为椅在2006-6-2 10:29:00的发言:
我当然知道了,但是如果输入字母,字母的整数值是很大很大的数,完全可以再次提示我输入啊,为什么程序就一直打印 分数必须在1-100之间,请重新打分 不停了,这是为啥?

这个想法肯定是不对的..%d 接受不到正确的字符

如果是%c还是有可能的..


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-02 10:38
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
mymax > a[i]? mymax: mymax = a[i];
mymin < a[i]? mymin: mymin = a[i];
这两句在win-tc上都运行不了!不过改过来了,你说的那个死循环也没有消失了!
我也不知道是什么原因!等着高手来~

2006-06-02 10:39
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
孔子曰:用户有犯错误的权利,而你没有。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-06-02 10:45
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-02 10:47
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
孔子曰:用户有犯错误的权利,而你没有。
没看懂!


2006-06-02 10:52
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
感谢8楼,我查了msdn,关于scanf没有阐述你的意思,你是不是说scanf执行之后,出错后,函数scanf就再也不执行了?

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-06-02 11:07
快速回复:为什么会出现死循环?
数据加载中...
 
   



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

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