在 C语言 里,“多组输入输出”是很多在线评测系统(OJ)常见的模式,通常有两种情况:
1. 输入到文件结束(EOF)
比如题目没有告诉有多少组数据,就需要一直读直到输入结束。
#include <stdio.h>int main() {int a, b;// scanf 返回值是成功读入的项数,遇到 EOF 返回 -1while (scanf("%d %d", &a, &b) != EOF) {printf("%d\n", a + b);}return 0;
}
📌 说明:
while (scanf(...) != EOF)
是经典写法,适用于输入不固定的情况。在线OJ或命令行中,输入到文件结束时(比如手动输入后按 Ctrl+D / Ctrl+Z)循环才会退出。
2. 输入指定组数
如果题目一开始告诉你有多少组,比如:
输入:
2
1 2
3 4
输出:
3
7
代码写法:
#include <stdio.h>int main() {int t;scanf("%d", &t); // 先读入组数while (t--) {int a, b;scanf("%d %d", &a, &b);printf("%d\n", a + b);}return 0;
}
📌 说明:
t--
每次循环减 1,直到 0 停止。常用于“有T组测试数据”的题目。
3. 输入直到满足条件退出
比如读到 0 0
结束:
#include <stdio.h>int main() {int a, b;while (1) {scanf("%d %d", &a, &b);if (a == 0 && b == 0) break; // 特殊条件退出printf("%d\n", a + b);}return 0;
}
✅ 总结:
EOF 控制 →
while(scanf(...) != EOF)
给定组数 →
scanf("%d", &t); while(t--) {...}
特定条件 →
if (a==0 && b==0) break;