多组输入如何实现?
看下面一道题:(题目来源:牛客网)
这道题我们在牛客网可以用下面一段代码实现:
但是注意,这样写是不对的,题目要求的是多组输入,但上面代码只能输入一组数据,能够测试通过是因为只测试了一组数据,要实现多组输入应该用下面一段代码:
#include<stdio.h> int main() { int a = 0; while (scanf("%d", &a)!=EOF) { if (a > 140) printf("Genius\n"); } return 0; }
将输入写入while循环就能实现多组输入。
大家可能对代码中的EOF有些疑惑,下面我们来解读一下:
scanf函数是用来读取数据的。
如果正常读取数据,函数返回的就是读取数据的个数。例如scanf("%d", &a);返回的就是1,
scanf("%d %d", &a,&b);返回的就是2。
如果读取遇到错误,或者读取遇到文件结束,函数返回的就是EOF。
代码中(scanf("%d", &a) ! = EOF)是循环的判断条件,意思是当输入正常读取时进入循环。也可以将它改为(scanf("%d", &a) == 1),同样可以作为判断条件表示当输入正常读取时进入循环。
好了,以上就是实现多组输入的方法,下面我们再看一道题目练习一下:
代码实现:
#include <stdio.h> int main() { int a = 0; while(scanf("%d",&a) == 1) { if(a%2==1) printf("Odd\n"); else printf("Even\n"); } return 0; }
如何停止输入?
有同学可能有疑问了,我输入完所有测试的值后怎么停止输入呢?
很简单,只需要输入Ctrl+z就会停止输入,注意VS编译器可能要输入好几个Ctrl+z才会停止输入,这只是VS编译器的小bug,大家不必理会。