C/C++ 输入输出实战指南
在算法竞赛和工程实践中,输入输出(I/O)往往是决定程序能否通过测试的关键。C 和 C++ 提供了丰富的 I/O 机制,从底层的 scanf/printf 到流式的 cin/cout,看似简单,实则暗藏玄机。很多开发者容易忽略缓冲区问题、格式控制陷阱以及性能瓶颈。
OJ 题目输入情况汇总
在 Online Judge (OJ) 平台上,输入场景通常可以归纳为以下几类。结合具体题目来理解会更直观。
单组测试用例
这类题目通常只包含一组数据,处理起来最直接。
示例:计算 (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 相关的正整数,然后取反。由于 n < 100,只需判断 100 以内的数字。相关条件包括:被 7 整除、个位是 7、十位是 7。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int i = 1;
int sum = 0;
while (i <= n) {
if (i % 7 != 0 && i % 10 != 7 && i / 10 != 7) {
sum += (i * i);
}
i++;
}
cout << sum << endl;
return 0;
}
多组测试用例
测试数据组数已知
当题目明确告知有 N 组数据时,使用循环即可。


