题目描述
你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。
输入
输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。
输出
对于输入的每对a和b,你需要依次输出a、b的和。
如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。
样例输入
1 5
10 20
样例输出
6
30
源代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a,b;
while(scanf("%d %d",&a,&b) != EOF){
printf("%d\n",a + b);
}
return 0;
}
总结
scanf()函数的返回值为其成功读入参数的个数。如果scanf()函数成功读入一个整数n,那么其返回值为1;如果该函数读入失败,则返回-1(而不是0),且C语言中使用EOF(即End Of File)来表示-1。
在一开始做这道题的时候就在何时终止循环上有疑问,在看了书之后,才明白过来。终止while循环的条件就是判断scanf的返回值为不为EOF(即文件中的数据有没有读完),如果没有读完就输出a+b的值即可。
在codeblocks上成功运行之后发现,即使一并输入,还是会在第一行输入的下方就出现a+b的值,不是那种输出所有a和b的值,再输出最终结果的实例上的情况,但是没有办法用判断循环的次数(期间想得到有几行输入从而判断循环的次数,但是不可行)。最后抱着试一试的心态,而且算法笔记上给出的这题代码就是上述代码,在codeup的oj上跑了一下,是正确的。这个地方应该没什么问题,或问题不大吧。