(while(scanf(“%d“,&n)!=EOF))的用法-创新互联

我们在做一些oj平台上的题目时经常碰见这几个字“多组输入”,如果你不了解这几个字的含义,就会出现一种我的代码明明正确,但oj平台就是显示“答案错误”,这种就需要我们用上while(scanf("%d%d",&x,&y)!=EOF)了

创新互联服务紧随时代发展步伐,进行技术革新和技术进步,经过10年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都做网站、成都网站制作、成都外贸网站建设、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

在学会使用while(scanf("%d%d",&x,&y)!=EOF)前,我们需要先了解scanf函数的返回值。

scanf的返回值就是“所输入的数据与格式字符串中匹配次数.”

对于scanf("%d",&x);

如果你输入一个数字,则匹配成功,返回1;

如果你输入一个字符或其他,则匹配失败,返回0;

如果你输入^Z(就是键盘的ctrl+z),则输入错误返回-1。

那么scanf("%d%d",&x,&y) 则同理,不同输出会返回 2 1 0 -1。

或许有小伙伴会问,这和EOF有啥关系呢?

EOF是End Of File(文件结束)的缩写,在c语言库中有这样一行代码:

#define EOF -1

EOF被定义为-1这个常量。

下面回到while(scanf("%d%d",&x,&y)!=EOF)

当你加上这个时,只要你不输入^Z scanf的返回值就>=0  不等于-1 条件为真,一直循环下去,

只有你输入^Z,条件为假,终止循环。

这就是我们所说的多组输入。

当然了,如果有的小伙伴还是不理解的话,可以直接套用,以一个简单代码为例:

#includeint main()
{
    int a = 0, b = 0,sum=0;
    scanf("%d%d", &a, &b);
    sum = a + b;
    printf("%d\n", sum);
    return 0;
}

非常简单的一个代码,就是求两个数的和。

但如果题目要求多组输入的话,这样的代码会显示答案错误的。

#includeint main()
{
    int a = 0, b = 0,sum=0;
    while (scanf("%d%d", &a, &b) != EOF)
    {
        sum = a + b;
        printf("%d\n", sum);
    }
    return 0;
}

我们只需把原来的代码放在while (scanf("%d%d", &a, &b) != EOF){ ......}中就可以啦!

希望能帮助到大家~

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:(while(scanf(“%d“,&n)!=EOF))的用法-创新互联
网页路径:http://myzitong.com/article/djppoo.html