while(scanf("%d",&n)==1)为什么能用来输入多组数据?

#include "stdio.h"
int main()
{
int n,i,a,m=1;

while(scanf("%d",&n)==1)
{for(i=1;i<=n;i++)
{scanf("%d",&a);
if(a%2!=0)
m=m*a;}
printf("%d",m);
m=1;}
return 0;
}
为什么用while(scanf("%d",&n)==1)就能输入多组数据?

条件表达式“scanf("%d",&n)==1”里面,左边的scanf函数如果有一个值被输入,则返回值1,如果没有值输入,则返回0,所以一直有值输入的话一直为1,跟右边相等,条件成立,继续循环输入多组数据
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-20
while(scanf("%d",&n)==1)
因为scanf()函数,返回值是获取到的变量个数。你输入一个数据返回值就是1
while(1==1)这个循环条件是成立的,所以继续循环输入本回答被提问者和网友采纳
第2个回答  2014-12-07
scnaf函数返回值是你赋值变量的个数,scanf("%d",&n)给一个变量n赋值,所以他每次返回的都是1,所以处于while(1)死循环。。如果是scanf("%d","%d",&a,&b)返回值就是2了。。
第3个回答  2014-12-07
因为如果输入数时scanf("%d",&n)返回1

c语言利用数组求最大值 可以输入多组数据 求详细解答。
while(scanf("%d",&n) == 1),输入任意整数scanf("%d",&n)函数都会返回1,但当输入任意字母时,将会返回0,这样就很容易结束循环了。

一个c语言的小问题 while(scanf("%d",&n))超时,而改成while(scanf("%d...
2. 当输入为EOF(通常切的题目有多组数据,会使用EOF表示输入结束),这时,没有读取输入到n,scanf返回值是-1,所以您的代码==1就不成立,所以会跳出循环。而如果是while(scanf("%d", &n))的话,即等价于while(-1),显然还会继续循环,所以超时。所以可以有以下用法:1. while(scanf("%d", ...

ACM里说多组数据怎么输入啊?
printf("%d\\n",(n+1)*n\/2);等差数列*\/ } return 0;}输出也在循环体内 ,就可以多次输出了scanf 是有返回值的,返回读到的数据的个数,所以while(scanf("%d",&n)!=EOF)就等价于while(scanf("%d",&n)==1),!=EOF 就是还有读到数据,继续处理的意思 还有一点要注意,有些题目处理玩一组数据后某些变...

while (scanf(''%d'', &num)==1) ;
因为scanf在读取数字时返回1条件为真,循环继续。这样就会无限输入数字但是都会忽略掉。

如何用c语言实现多组数据输入,每组数据一行每行数据个数任意
while(scanf("%d", &p) == 1){ \/\/这里是其他参数的输入和算法过程 } 当第一行是三个数你可能会这么做:当然了,刚刚那种办法是可以的,但为了使程序更漂亮:while(scanf("%d%d%d", &a, &b, &c) == 3)如果会使用EOF:scanf(...) != EOF 但是注意!虽然大多数编译器的eof是-1,但是...

关于while(scanf("%d",&num)==1)
在你输入字母时,因为scanf("%d",&num)中格式要求是整型(%d),所以不符合,返回值为0,而当你输入任何数字时,scanf的返回值都是1。这是因为:函数原型:int scanf(char *format[,argument,...]);scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b);如果a和b都被成功读入,那么scanf...

c语言 while(scanf("%d", &num) == 1) 起什么作用
1、scanf()是格式输入函数,它的返回值是已经正确输入变量的个数,如返回值为1,代表已经输入了一个变量,但它的返回值一般不用。2、==是c语言中逻辑运算符"相等"的符号,scanf("%d", &sum) == 1表示scanf函数的返回值为1。3、while(scanf("%d", &sum) == 1) 是整句话的意思是当变量...

C语言中如何实现多组数据输入输出?
C语言中实现多组数据输入输出主要有两种方式: 1.首先输入一个n,表示将有n个输入输出,例如: #include <stdio.h>int main(){ int n,a; scanf("%d",&n); while(n--){ scanf("%d",&a); printf("输出:%d\\n",a); } return 0;}\/*运行结果:3255输出:255156输出:156125输出:125 *\/ 2.使用...

ACM里说多组数据怎么输入啊?
输出也在循环体内 ,就可以多次输出了 scanf 是有返回值的,返回读到的数据的个数,所以while(scanf("%d",&n)!=EOF)就等价于while(scanf("%d",&n)==1),!=EOF 就是还有读到数据,继续处理的意思 还有一点要注意,有些题目处理玩一组数据后某些变量值会发生变化,所以循环体内要记得初始化 ,...

c语言的问题关于while(scanf(“%d",&sum)!=1)
三点:scanf从缓冲区读取:你输入的字符串会保存在一个缓冲区内,scanf在正确的时候是到这个缓冲区中读取字符,并且从缓冲区中删除字符。但如果是%d格式碰到了字母,则不会读取也不会删除,之后ABC还在缓冲区内。scanf不停止:如果缓冲区内有内容,scanf是不会停下来等你输入的,因为ABC一直在缓冲区内...

相似回答