十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我们在做一些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元起,快前往官网查看详情吧