ACM/OJ 題目常見描述:「輸入包含多行數據,請處理到文件結束」。無明確終止標記(如#、雙回車)。
scanf 讀取失敗(遇到 EOF)返回 EOF(通常為 -1)。
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
// 處理 a, b
printf("%d\n", a + b);
}
或針對固定項數:
while (scanf("%d %d", &a, &b) == 2) { ... }
while (scanf(...)):讀取 0 項(如非數字輸入)返回 0,循環退出,但非 EOF 導致後續無限循環。clock()控制時間:OJ 編譯環境無time.h或行為不可預期。fscanf(fp, ..., &a, &b) != EOF同樣適用。
#include
int main() {
int a, b;
while (scanf("%d %d", &a, &b) == 2) {
printf("%d\n", a + b);
}
return 0;
}
輸入:
1 2
3 4
Ctrl+Z
輸出:
3
7