基本情况(不多组)
输入a、b(空格隔开),输出a+b
样例输入
3 4
样例输出
7
程序
#include<stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
已知个数的多组输入
输入第一行有一个数t,接下来有t组数据。每组为一行,两个整数a、b(空格隔开)
要求输出a+b
样例输入
2
3 4
1 2
样例输出
7
3
程序
#include<stdio.h>
int main(){
int t;
scanf("%d",&t);
while(t--){//相当于for(int i=0;i<t;i++)
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
}
不知道个数的多组输入
(南信大OJ大多数为这种,有部分题是这种但没在题目中说明,因此建议不是第二种情况(没告诉你t)的话统一按照这种写)
多组输入,每组为一行,两个整数a、b(空格隔开)
要求输出a+b
样例输入
3 4
1 2
样例输出
7
3
分析
windows下,Ctrl+Z,表示终止输入,相当于文件读写时遇到了文件结尾。
scanf
函数具有返回值,表示成功读取的变量个数。比如scanf("%d%d",&a,&b)
这条语句,正常输入,返回值是2;输入一个数就遇到Ctrl+Z时,成功读取1个,返回1;如果什么都没输入就Ctrl+Z了,就返回EOF(End Of File)。
EOF是stdio.h
定义的宏,为常量-1。c语言中0表示逻辑假,非0表示逻辑真,因此scanf()+1
、scanf()!=-1
、scanf()!=EOF
、~scanf()
等价。
程序
#include<stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",a+b);
}
return 0;
}
输出时,每一组算完,直接输出即可
不需要等全部算完一起输出