前言
在编程中,输入输出(I/O)是交互的基础。C 和 C++ 提供了丰富的机制,从简单的 printf/scanf 到流式操作 cin/cout。看似简单,实则暗藏玄机。缓冲区问题、格式控制陷阱、性能瓶颈都可能成为调试的拦路虎。本文将针对这些常见问题逐一拆解。
1. OJ 题目输入情况汇总
在竞赛环境中,输入场景通常分为以下几类。结合具体题目来看会更直观。
1.1 单组测试用例
例如计算 (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;
}
1.2 多组测试用例
1.2.1 测试数据组数已知
如果题目明确告诉你有 N 组数据,直接循环 N 次即可。
#include <iostream>
using std;
{
n;
cin >> n;
a, b;
(n--) {
cin >> a >> b;
cout << a + b << endl;
}
;
}


