C/C++ 输入输出详解:OJ 场景与性能优化
前言
在编程世界中,输入输出(I/O)是交互的基础。C 和 C++ 提供了强大的 I/O 机制,从简单的 printf 和 scanf 到 C++ 的流式操作 cin 和 cout,看似简单,实则暗藏玄机。许多开发者在使用过程中可能会遇到缓冲区问题、格式控制陷阱、性能瓶颈,甚至安全性隐患。本文将针对 C/C++ 输入输出的常见问题进行一一梳理。
1. OJ 题目输入情况汇总
在竞赛的 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 无关的数 思路:先输入 n,循环产生 1~n 的数字,找出与 7 无关的正整数,最后求平方和。与 7 相关的条件包括:被 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;
}


