标题:为了什么这样个程序会进入死循环,求助
只看楼主
张伟波
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2013-2-1
结帖率:0
已结贴  问题点数:20 回复次数:6 
为了什么这样个程序会进入死循环,求助
#include<stdio.h>
int main(void)
{
    int i;
    bool b=true;
    while(b)
    {   int c;
        c=scanf("%d",&i);
        printf("%d\n",c);
        if(c==1)
            b=false;

        else
            printf("your input wrong,you can input only a charactr,try again\n");
    }
    printf("the num is:%d",i);
    return 0;
}   
搜索更多相关主题的帖子: false return wrong 
2013-03-08 05:16
终结者C
Rank: 2
等 级:论坛游民
帖 子:34
专家分:23
注 册:2013-3-3
得分:3 
#include<stdio.h> int main(void)              { int i, b=1;     while(b)                { int c;      c=scanf("%d",&i); printf("%d\n",c); if(c==1) b=0;        else             printf("your input wrong,you c aractr,try again\n");               }               printf("the num is:%d",i); return 0; }           修改了一下bool类型。

[ 本帖最后由 终结者C 于 2013-3-8 07:12 编辑 ]
2013-03-08 07:09
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
得分:3 
LZ如果非得用true和false来赋值的话...就引入头文件<stdbool.h>...再试试吧...程序逻辑是没有问题的。
2013-03-08 09:53
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
得分:3 
这个问题论坛有提到过:
scanf的命令是接收整型了,如果你输入的是char,但你输入错误后又没有清空缓冲区
scanf在每次循环都会跑到缓冲区去读数据,类型不匹配不接收,这样就成死循环了。

因此在每次输入错误时调用ffulsh(stdin);清空一下输入残留数据,就可以了:
程序代码:
#include<stdio.h>
int main()
{
    int i;
    bool b=true;
    while(b)
    {   int c;
        c=scanf("%d",&i);
        printf("%d\n",c);
        if(c==1)
            b=false;

        else
        { 
            printf("your input wrong,you can input only a charactr,try again\n");
            fflush(stdin);
        }
    }
    printf("the num is:%d",i);
    return 0;
} 
2013-03-08 10:48
party620
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:696
专家分:2521
注 册:2013-1-31
得分:3 
学习了...
2013-03-08 10:57
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:3 
楼主看看这样行不
#include<stdio.h>
 int main(void)
 {
     int i;
     bool b=true;
     int c;
     while(b)
     {  
         c=scanf("%d",&i);
         printf("%d\n",c);
         if(c==1)
             b=false;
 
        else
            
        {
            printf("your input wrong,you can input only a charactr,try again\n");
            break;
        }
     }
     if(c==1)
     {
     printf("the num is:%d",i);
     }
     return 0;
 }
2013-03-09 23:33
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
得分:3 
#include<stdio.h>
 int main(void)
 {
     int i;
     bool b=true;
     while(b)
     {   int c;
         c=scanf("%d",&i);
         printf("%d\n",c);
         if(c==1)
             b=false;
 
        else
             printf("your input wrong,you can input only a charactr,try again\n");
     }
     printf("the num is:%d",i);
     return 0;
 }
#include<stbool.h>试试

一同学习, 一同进步
2013-03-09 23:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-400108-1-1.html




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

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