C/C++ 输入输出实战:OJ 场景与性能优化
在算法竞赛和工程开发中,输入输出(I/O)是与外部交互的基础。C 和 C++ 提供了强大的 I/O 机制,从简单的 printf/scanf 到 C++ 的流式操作 cin/cout,看似简单,实则暗藏玄机。许多开发者在使用过程中可能会遇到缓冲区问题、格式控制陷阱或性能瓶颈。
本文将结合 OJ(Online Judge)常见场景,梳理输入输出的处理技巧,并深入对比不同 I/O 方式的性能差异。
OJ 题目输入情况汇总
在竞赛环境中,输入模式通常可以归纳为以下几类,掌握这些模式能避免大部分 TLE(超时)或 WA(答案错误)。
单组测试用例
这类题目只包含一组数据,读入后计算并输出即可。
示例:计算 (a+b)/c 的值
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << (a + b) / c << endl;
return 0;
}
示例:与 7 无关的数
思路:先找出与 7 相关的正整数,然后取反得到无关的正整数。条件包括:被 7 整除、个位是 7、十位是 7。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int i = 1, sum = 0;
while (i <= n) {
if (i % 7 != 0 && i % 10 != 7 && i / 10 != 7) {
sum += (i * i);
}
i++;
}
cout << sum << endl;
return 0;
}


