关于多组输入与EOF

现在很多竞赛与面试都会使用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;
}

若有不正请指出,欢迎讨论噢

猜你喜欢

转载自blog.csdn.net/2301_78636079/article/details/131583584