while循环中加入scanf 输出不循环

#include<stdio.h>
const A=10;
int main()
{
int a,b;
scanf("%d",&a);
b=a+A;
while(a<=b)
{
printf("%d\n",a++);
}
return 0;
}
此程序输入1,可以输出1234567891011。但是
#include<stdio.h>
const A=10;
int main()
{
int a,b;
scanf("%d",&a);
b=a+A;
while(a<=b)
{
printf("%d\n",a++);
scanf("%d",&a);
}
return 0;
}
此程序输入1,却只能输出1?

在你输入y回车后,键盘的缓冲区中会存在一个y和一个'\n'(回车符)。所以第第一次你的a会读入字符y,然而第二次输入y时,缓冲区中还有一个回车符在,所以第二次读入的是第一次残留在缓冲区的回车符,而不是新输入的y。所以不满足条件,退出循环。

修改方法:
在scanf语句前加一句:fflush(stdin);这句的作用是清空缓冲区(就是所谓的流)中内容,这样你再次输入y的时候就不会读到上次剩余的回车符了。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网