Description
Give you two Integer A and B , please calculate the sum. Be careful there are muti-test data in the question.
给你两个整数 A , B . 输出它们的和。注意 题目是多组输入。
标准代码见页尾 HINT。
Input
Two integer a,b (0<=a,b<=10)
多组测试数据,对于每组数据:
每组数据占一行,包含两个数组 a 和 b。
Output
Output a+b
每组输出占一行,每行一个数表示 a+b 的和。
Sample Input
1 2 2 3
Sample Output
3 5
如果不是多组输入和输出这种情况,我们可以很容易地得出代码:
#include<stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); printf("%d\n",a+b); return 0; }
但是这个题目在多组输入这方面的要求是,你要能在不知道有几组输入数据的情况下来判断测试数据是否已经结束。
要达到这个目的,我觉得有必要去了解函数返回值这个概念。
对于一个函数来说,这个函数的返回值只存在两种情况,有或没有。
而我们使用的scanf语句则是属于有返回之的函数类型。
有返回值的函数返回的不同值可以传递给我们不同的信息,
而scanf语句的返回值可以分成三种情况: 1) 正整数,表示正确输入参数的个数。
例如执行 scanf("%d %d", &a, &b); 如果用户输入"3
4",可以正确输入,返回2(正确输入了两个变量)如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。
我们可以通过scanf语句的返回值EOF(EOF和scanf()语句都被定义在了stdio.h头文件中)来判断多组测试数据是否结束。所以,我们能够得到以下代码:
#include<stdio.h> int main() { int a,b; While(scanf("%d %d",&a,&b)!=EOF) printf("%d\n",a+b); return 0; }