本文转自 迂者-贺利坚 老师的文章,感谢贺老师,很受益。
- 最简单的输入
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;
}
- 一次运行,要输入多组数据,直到读至输入文件末尾(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)组合作为输入结束,此谓键盘输入设备的“文件末尾”。
- 一次运行,要输入多组数据,组数由第一个输入数据决定(在开始的时候输入一个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结束”。
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;
}