刚开始学习C语言的时候,并不知道多组数据为什么要写成形如以下几种形式;
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
或者:
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
又或者:
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3)
但是随着知识面的拓展,本博主也知道为什么了,嘻嘻,以下为解释部分,部分摘自刘汝佳的
《算法竞赛》
首先要提到一点,scanf这个函数本身是具有返回值的,并且是int型
int i=scanf("%d%d%d",&a,&b,&c);
是可以进行运行的。
根据史料记载(百度):
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
但是有一点,当要求输入三个整型时,如果我输入 (1 ,f ,1)这三个时,返回值时1而不是2,(可以上机实验一下)
原因是:遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。