杭电ACM 1000:A+B Problem
发布时间
阅读量:
阅读量
这篇博客详细记录了我在杭电ACM平台上的刷题经历。通过练习编程题目来提升解决实际问题的速度和准确性。学习并非无目的的行为;它只是为了让自己变得更加卓越。
原题回顾
Problem Description
Calculate A + B
Input
Each line will contain two integers A and B. Process to end of file.
Output
For each case, output A + B in one line.
Sample Input
1 1
Sample Output
2
看起来很简单的一道题目,在线平台上传交作业时需要确保代码无误。对于学过C语言的人来说,编写相应代码并不困难。然而,在线系统对提交的要求非常高,仍然存在一定的挑战性。
NO.1 错误点一
大家很容易写出如下类似普遍错误的代码:
#include <stdio.h>
int main(void)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
当你信心满满的将上述代码提交之后发现结果是wrong answer,什么原因呢?那就怪自己看题太粗心,再看看我们题目描述**“For each case”** ,貌似自己的代码没有这个功能体现吧,在这里不只是一个测试用例,而是很多个,怎么体现可以使用很多个用例呢?当然是循环了,必须将输入输出语句用循环括起来。然后再把改过后的代码进行提交,发现结果是另一种报错**“Output Limit Exceeded ”** ,看吧,有没有崩溃的感觉,这么简单的一道题竟然弄了几次还不对,顿时感觉自己弱爆了吧。下面正是我们的另一个错误。
NO.2 错误点二
每当遇到困惑时
scanf("%d %d",&a,&b);
- 若a和b均被成功读入,则 scanf函数的返回值为2。
- 仅当a被成功读入时,该函数的返回值为1。
- 若无a或b的输入,则该函数的返回值是0。
- 在发生错误或到达文件末尾时,函数会返回 EOF 值。
且最终输出结果类型定为整数类型。
所以我们的代码中在读取流的时候必须有EOF判断,EOF其实是一个宏,他的值为-1。
好了,这是这道题常见的两种错误,做错了不要紧,积累经验,将知识慢慢捡起来你就成功了。正确的代码如下:
#include <stdio.h>
int main(void)
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
当你看到结果是Accept,一种自豪感油然而生。
全部评论 (0)
还没有任何评论哟~
