ACM題目中幾種 數據輸入 的處理方法 —— C++

本文轉自 迂者-賀利堅 老師的文章,感謝賀老師,很受益。

  1. 最簡單的輸入
  Description
    計算 a+b
    
     Input
    兩個整數 a,b
     
    Output
    a+b的值
     
     
    Sample Input
    1 2
     
    Sample Output
    3
  • 這種最簡單的輸入,接受一組輸入,針對這組輸入計算出值即可。這與平時的程序設計並無差異。解決辦法是:
       #include <iostream>
        using namespace std;
        int  main(){
            int a,b;
            cin >> a >> b;
            cout << a+b << endl;   //對其他題目,換成要求的複雜處理與輸出
            return 0;
        }
  1. 一次運行,要輸入多組數據,直到讀至輸入文件末尾(EOF)爲止
  Description
    計算 a + b
     
    Input
    多組由兩個整數(a和b)構成的輸入,a和b之間用空格隔開,每組輸入單獨佔一行 
     
    Output
    每組的兩個整數(a和b)求和並輸出,每組的求和結果獨佔一行
     
    Sample Input
    1 5
    10 20
    400 516
     
    Sample Output
    6
    30
    916
  • 這種輸入包含多對輸入數據,但沒有指出到底有多少對輸入,要有辦法判斷輸入何時結束。解決辦法是:
#include <iostream> 
using namespace std;
int main() {
	int a, b;
	while (cin >> a >> b) {
		cout << a + b << endl;
	}
	return 0;
}

  • 當讀到輸入結束時,cin >> a >> b返回 0,循環也結束。
  • 在調試程序時,鍵盤輸入的數據,用CTRL+Z(即按住CTRL鍵不放,再按下Z)組合作爲輸入結束,此謂鍵盤輸入設備的“文件末尾”。
  1. 一次運行,要輸入多組數據,組數由第一個輸入數據決定(在開始的時候輸入一個N,接下來是N組數據)
  Description
    計算 a + b
     
    Input
    第一行是數據的組數N,從第二行是N組由兩個整數(a和b)構成的輸入,a和b之間用空格隔開,每組輸入單獨佔一行 
     
    Output
    每組的兩個整數(a和b)求和並輸出,每組的求和結果獨佔一行
     
    Sample Input
    2
    1 5
    10 20
     
    Sample Output
    6
    30
  • 需要先讀入第一行確定組數N,而後寫一次執行N次的循環進行處理即可。解決辦法是:
#include <iostream>
using namespace std;
int main() {
	int a, b, n;
	cin >> n;
	while (n--) {
		cin >> a >> b;
		cout << a + b << endl;
	}
	return 0;
}
  1. 輸入不說明有多少組數據,但以某個特殊輸入爲結束標誌。平時做題中常見諸如“輸入學生成績,以-1結束”。
 Description
    計算 a + b
     
    Input
    多組由兩個整數(a和b)構成的輸入,a和b之間用空格隔開,每組輸入單獨佔一行。當輸入爲 0 0 時,輸入結束。
     
    Output
    每組的兩個整數(a和b)求和並輸出,每組的求和結果獨佔一行。
     
    Sample Input
    1 5
    10 20
    0 0
     
    Sample Output
    6
    30

  • 構造循環對數據進行處理,將是否遇到了要求結束的輸入,作爲循環是否結束的依據。解決辦法是:
#include<iostream>
using namespace std;
int main() {
	int a, b;
	while (cin >> a >> b && (a || b)) {
		cout << a + b << endl;
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章