题目链接:BC49-判断2个数的大小
这道题难度不大,但有不少细节需要注意。
题目有一个要求——“题目有多组输入数据,每一行输入两个整数”。这时单个scanf函数就不能符合多组输入的要求了。我们需要使用while函数做一个简单的循环判断。当我们scanf函数检测到文本结束标志EOF(end of file)时,程序跳出循环结束。
补充一下C语言的EOF。C标准函数库中表示文件结束符EOF(end of file)。在while循环中以EOF作为文件结束标志,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。由于ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。 EOF 的值通常为 -1,依系统有所不同。
我在编译这个问题的时候,程序不停报错。先来看一下错误的代码:
程序不能成功运行:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
while(scanf("%d%d",&a,&b)!=EOF);
{if (a > b)
{
printf("%d>%d\n",a,b);
}
else if (a == b)
{
printf("%d=%d\n",a,b);
}
else
{
printf("%d<%d\n",a,b);
}
}
return 0;
}
程序报错,显示实际输出组数不满足条件:
经过检查发现是while函数后不小心加入了一个“;”号,导致的程序问题,更改后的正确程序:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==b)
{
printf("%d=%d\n",a,b);
}
else if(a>b)
{
printf("%d>%d\n",a,b);
}
else
{
printf("%d<%d\n",a,b);
}
}
return 0;
}
程序成功编译!