现在很多竞赛与面试都会使用OJ,不可避免的遇到多组输入问题,那么该如何解决呢
现给出如下例题
据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。
如果是小白的话,看到肯定会一头雾水,可能按照自己的理解写
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a>=140)
{
printf("Genius");
}
return 0;
}
代码本身没有问题,但却不符合题意,题目要求多组输入,而我们仅仅只进行了一次输入,
那么如何修改呢?
既然是多组输入,我们不可避免的想到循环
于是
#include <stdio.h>
int main()
{
int a;
while(scanf("%d",&a))
{
if(a>=140)
{
printf("Genius");
}
}
return 0;
}
那while中又该怎样去写呢
首先我们要了解,scanf是一个输入函数,登录网站cplusplus.com - 搜索
发现scanf具有返回值
返回值由成功输入的个数决定,
例如
故我们可以使用
int main()
{
int a;
while (scanf("%d", &a)==1)
{
if (a >= 140)
{
printf("Genius");
}
}
return 0;
}
那我们知道成功读取返回1,未成功返回EOF,值为-1,故也可改为
int main()
{
int a;
while (scanf("%d", &a)!=EOF)
{
if (a >= 140)
{
printf("Genius");
}
}
return 0;
}
若有不正请指出,欢迎讨论噢