(while(scanf(“%d“,&n) !=EOF))的用法
我们在做一些oj平台上的题目时经常碰见这几个字“多组输入”,如果你不了解这几个字的含义,就会出现一种我的代码明明正确,但oj平台就是显示“答案错误”,这种就需要我们用上while(scanf("%d%d",&x,&y)!=EOF)了
在学会使用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,条件为假,终止循环。
这就是我们所说的多组输入。
当然了,如果有的小伙伴还是不理解的话,可以直接套用,以一个简单代码为例:
#include<stdio.h>
int main()
{
int a = 0, b = 0,sum=0;
scanf("%d%d", &a, &b);
sum = a + b;
printf("%dn", sum);
return 0;
}
非常简单的一个代码,就是求两个数的和。
但如果题目要求多组输入的话,这样的代码会显示答案错误的。
#include<stdio.h>
int main()
{
int a = 0, b = 0,sum=0;
while (scanf("%d%d", &a, &b) != EOF)
{
sum = a + b;
printf("%dn", sum);
}
return 0;
}
我们只需把原来的代码放在while (scanf("%d%d", &a, &b) != EOF){ ......}中就可以啦!
希望能帮助到大家~
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码