C语言中 while(scanf("%d",&a)!=1) printf("XXXX/n"); 输入一个'q',输出为什么会无限循环输出.

如题所述

读取整数,q不是整数,q还在缓存中,下次读取又是q,如此无限循环了。如果类型正确会依次读取每个数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-17
你输入一个字符后,虽然&a有值了(即a的地址),但是a是无值的,相当于字符赋给&a,a里面存的值一直无效,又因为a有地址,所以每次循环不会再让你输入值,而一直循环下去
第2个回答  2012-09-17
因为q是字符,scanf在缓冲区中读不到整数,每次读取后返回值都是0

...printf("XXXX\/n"); 输入一个'q',输出为什么会无限循环输出.
读取整数,q不是整数,q还在缓存中,下次读取又是q,如此无限循环了。如果类型正确会依次读取每个数。

c语言中 while (scanf("%d".&a) == 1) 什么意思?
应该是 scanf("%d",&a),scanf()是一个输入函数,输入一个int值存到a里面,同时scanf是有返回值的,表示输入值的个数,此处若scanf只输入一个变量,其返回值就等于1,while循环条件成立,进入循环体。

c语言 scanf("%d",&a);输入字符为什么会进入死循环?
那么输入了字符它就一直留在输入缓冲区;只要缓冲区有字符,scanf就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“死循环”了。为了验证,你在printf("you lose!!\\n");后加一句getchar();,把缓冲区里的那个非数字字符接收掉,看看还会不会是“...

while((scanf("%d",&a))!='\\n')这句哪错了
scanf("%d",&a) 只输入1个数,返回值是成功输入的数的个数,输入成功,返回1,输入失败,例如没有拍入 整型,却拍入了字母,返回0,如果 没给数,拍了回车,则会等待 输入。 所以 无论何种情况,不会 返回 '\\n'.即使是 scanf("%c",&a) ,也不会 返回 '\\n'.这样简单:char a[80]...

while (scanf("%d", &n)==1 && n!=0)具体什么意思
scanf("%d",&a),输入一个数,scanf返回值为1,如果输入的是字母什么乱七八糟的,scanf返回0,输入不成功,那么这句话的意思就是,检测输入的数不为0,再进行循环~

C语言 循环体内的输出是怎么工作的?为什么最后才全部输出?
是这样子的,就是你输入一系列以后回车,然后再逐个输出你输入的。它是先存入一个输入流中,然后再逐个输出。像scanf("%d",&a);printf("%d",a);你也可以一次性输入多个,但是只有一个printf,所以他只输出第一个,明白吗?你可以试着搜一下输入输出流查看一下更详细的。。。

初学C语言 while(scanf("%d",&n)==1) 是什么意思?
scanf 函数有一个返回值,0表示接受输入失败,1表示接受输入成功。 while(scanf("%d",&x)==1) 的意思就是: 当接收输入变量x的值成功的时候,继续做循环。

C语言:while(~scanf("%d",&n))什么意思呀? while(!scanf("%d
就是当输入一个整型,且这个整型的数不是0时,条件成立,否则,若输入0,则跳过while里面的内容。其实scanf("%d",&n),n这是一个逗号表达式,所谓逗号表达式,它的值是逗号后面的那个数,举例如下:y=(5,6);\/\/那么y=6,注意的是因为逗号表达式的优先级比赋值运算还低,所以如果你写成y=5,6的...

C语言中定义一个整形变量n,用%d录入值,如何在输入字母时报错?_百度...
int main(){ int n;while(scanf("%d", &n) < 1) { \/\/ scanf接受输入几个参数,这里 < 几 printf("input error. try again...");while(getchar() != '\\n');} printf("%d", n);} 比如 scanf("%d%d", &a, &b) < 2 scanf返回输入成功的变量数,如果一个也不成功返回EOF ...

while(scanf( %d ,&a[i])!=EOF)的用法
输入整数赋值给a数组,直到到达EOF为止,EOF 意思就是 end of file。scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b);如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值为1 如果a和b都未被成功读入,返回值为0 如果遇到错误或遇到end of file,返回值为EOF。

相似回答