C语言,while出现无限循环。

这是我的代码:
#include <stdio.h>
int main(void)
{
int b,a;
a=b=0;
while(a != 11)
{
b=(scanf("%d",&a));
if(b == 1)
printf ("%d\n",b);
else
printf ("++++%d\n",b);
}
return 0;
}

//我如果输入字母或浮点数,就会无限出现++++0,按道理只会出现一次的,请大家帮我解答一下疑惑,谢谢。

在c语言的世界里除了0是false,其他的都是ture。

while(1){ } 语句判断条件是死循环是没错,但也并非一定是死循环,也有可能运行到某个时刻就跳出while循环了。

比如 while(1)里面运行到了break,或者return,那么就会终止当前的while语句,结束循环。上面说的中断,只是一时跳出while语句,执行其他语句,执行完以后仍然会返回while(1)继续循环。

扩展资料:

语法

Pascal

while <条件> do <语句>

意为当条件符合时,接着做下面的语句;不符合时,退出循环。

C语言

do <语句> while(<条件>);

while(<条件>) <语句>;

C++

while(<条件>) <语句>;

do <语句> while(<条件>);

Java

while(<条件>) {<语句;>}

do {<语句;>} while(<条件>);

二者的区别是do-while最少会被执行一次。

循环中可以使用continue结束当前循环,回到循环开始处开始下一次循环。也可以用break跳出整个循环。

参考资料来源:百度百科-while (循环语句及英文单词)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-22

这个原因是这样的:

当你输入非法时,你的输入将留在输入缓冲区中。这样下一次循环,因为输入缓冲区中仍然有数据,就会再次做判断,判断非法继续留在输入缓冲区中,如此反复。。。。

解决方法也很简单,加一句fflush(stdin)即可。

#include <stdio.h>
int main(void)
{
    int b,a;
    a=b=0;
    while(a != 11)
    {
        b=(scanf("%d",&a));
        if(b == 1)
            printf ("%d\n",b);
        else
        {
            printf ("++++%d\n",b);
            fflush(stdin);
        }

    }
    return 0;
}

本回答被提问者采纳
相似回答