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

这是我的代码:#include<stdio.h>intmain(void){intb,a;a=b=0;while(a!=11){b=(scanf("%d",&a));if... 这是我的代码:
#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,按道理只会出现一次的,请大家帮我解答一下疑惑,谢谢。
展开
 我来答
四舍五不入6
高粉答主

2019-11-14 · 还没有填写任何签名哦
四舍五不入6
采纳数:27 获赞数:71371

向TA提问 私信TA
展开全部

在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 (循环语句及英文单词)

帐号已注销
推荐于2016-09-22 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1305万
展开全部

这个原因是这样的:

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

解决方法也很简单,加一句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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式