Bootstrap

牛客网《BC49-判断2个数的大小》题目笔记

题目链接: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;
}

程序成功编译!

 

 

 

;