关于多组数据测试的问题

题目要求是 多组数据测试 当输入0时结束
那 为什么不能写成 while ((scanf("%d",&n))!=0)

而要写成 while ((scanf("%d",&n))==1&&n!=0)

scanf的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。

2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。

我发现了两个方法,这里直接以代码表示
方法一
#include 
int main() 

int i,n;
while(scanf("%d",&n)!=EOF)表示读到文件末尾。
{

}
return 0;

}
方法二
#include 
int main() 

int i,n;
while(scanf("%d",&n)&&n)如果n=0就结束......
答案就在这里:解决多组数据测试问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

EOF的值就是-1,如果你没有输入n的值,那么程序接受的值就是-1。