1. 程式人生 > 其它 >a+b問題中的多組輸入

a+b問題中的多組輸入

基本情況(不多組)

輸入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()+1scanf()!=-1scanf()!=EOF~scanf()等價。

程式

#include<stdio.h>
int main(){
	int a,b;
	while(scanf("%d%d",&a,&b)!=EOF){
		printf("%d\n",a+b);
	}
	return 0;
}

輸出時,每一組算完,直接輸出即可

不需要等全部算完一起輸出