C++ 竞赛入门

输入输出

输入输出

本节学会什么

  • std::cin 从标准输入读取数据
  • std::cout 输出答案
  • fixedsetprecision 控制小数位数

为什么需要它

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 53\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:数字反转 题解 观察输入输出格式,思考“数值”和“字符序列”的区别。