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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章