a+b問題中的多組輸入
阿新 • • 發佈:2021-11-13
基本情況(不多組)
輸入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;
}
輸出時,每一組算完,直接輸出即可
不需要等全部算完一起輸出