C++ 竞赛入门
输入输出
输入输出
本节学会什么
- 用
std::cin从标准输入读取数据 - 用
std::cout输出答案 - 用
fixed和setprecision控制小数位数
为什么需要它
OJ 不会把数据写死在程序里,而是在运行时输入测试数据。你的程序要读入数据、计算并按题目格式输出,这就是绝大多数竞赛题的共同外壳。
最小可运行示例
#include <iostream>
int main() {
int a, b;
std::cin >> a >> b;
std::cout << a + b << '\n';
return 0;
}
输入:
3 5
输出:
8
cin >> a >> b 会自动跳过空格和换行,所以 3 5、3\n5 的读取效果相同。
关键过程与易错点
>>的读入顺序必须和题目给出的数据顺序一致。- 输出答案后加
\n,便于阅读,也避免某些格式问题。 - 输入整数时变量必须是整数类型;输入小数时使用
double。 - 题目要求保留两位小数时,使用下面的写法:
#include <iomanip>
#include <iostream>
std::cout << std::fixed << std::setprecision(2) << 3.5 << '\n';
不要在刚开始时加入 ios::sync_with_stdio(false) 等优化。先保证输入输出正确;遇到明确的数据量需求时再学习优化。
动手检查
读入三个整数,输出它们的和与平均数。先只输出整数平均数,再把表达式改成能输出小数平均数的形式。
立即练习
| 难度 | 题目 | 题解 | 训练目标 |
|---|---|---|---|
| 基础 | 洛谷 P1001:A+B Problem | 题解 | 读入两个整数并输出一个整数答案。 |
| 巩固 | 洛谷 P5706:再分肥宅水 | 题解 | 同时读入小数和整数,按要求输出结果。 |
| 挑战 | 洛谷 P5705:数字反转 | 题解 | 观察输入输出格式,思考“数值”和“字符序列”的区别。 |