| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:怎么会无限循环下去!
只看楼主 加入收藏
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:5 
怎么会无限循环下去!
# include <stdio.h>

int main (void)
{
    const int secret_code = 510;
    int enter_code;

    printf ("Please Enter The Code:");
    scanf ("%d", &enter_code);
    do
    {
        printf ("Sorry! Try Again!\n");
        printf ("Please Enter The Code:");
        scanf ("%d", &enter_code);
    }while (secret_code != enter_code);

    printf ("Congratulations!\n");
    return 0;
}


我输入字母d之后 就进行了无限循环。为什么?
搜索更多相关主题的帖子: include return Enter 字母 
2014-05-10 09:13
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
收藏
得分:2 
字母是你能输入的么

又没有判断

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-05-10 09:35
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:2 
只能说 scanf 太过刻板,在处理 %d 时遇到第一个非数字输入就停止,事实上在输入一个 d 字符时,scanf 并没有取出 d 字符,enter_code 什么也没改变,d 字符仍然保留在输入缓冲区中,在后面的循环中也是如此,因此成了无限循环。
建议:
声明一个字符数组:
    char s[256];
scanf 用下面两条语句代替:
    gets_s( s, 256 );
    enter_code = atoi( s );
这样的话程序比较健壮。
2014-05-10 09:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
明明是被盗了,却打120,还赖120不能抓到贼

总有那身价贱的人给作业贴回复完整的代码
2014-05-10 10:08
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:2 
     你至少输入两个数!第一个数随意什么都可以,后面的数只要出现510程序就会结束。你试一试。仔细读读程序,考虑程序流程,分析为什么。这可只是简单的do-while语句。
2014-05-10 10:36
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
还有,逻辑上有些混乱,应将 do ... while 改为单一的 while,先判断后执行循环体。

楼上要看到,他就是要输入一个非数字。
2014-05-10 10:51
快速回复:怎么会无限循环下去!
数据加载中...
 
   



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

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