首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

經典 OJ 入門題:A+B Problem (HDU 1000) C 語言解法詳解

     編輯:關於C語言

經典 OJ 入門題:A+B Problem (HDU 1000) C 語言解法詳解

HDU 1000 是線上評判系統(OJ)的「Hello World」,考驗基本輸入輸出與 EOF 處理。題目要求讀取多行輸入,每行兩個整數 A、B,輸出其和,直到檔案結尾。

題目大意

  • 輸入:多行,每行兩整數 A B
  • 輸出:每行對應一個 A+B
  • 結束條件:EOF (End of File)

標準解法

#include <stdio.h>
#include <stdlib.h>

int main() {
    int a, b;
    // scanf 返回成功讀取的項目數,遇到 EOF 返回 EOF(-1)
    while (scanf("%d %d", &a, &b) != EOF) {
        printf("%d\n", a + b);
    }
    return 0;
}

關鍵點解析

  1. scanf("%d %d", &a, &b):格式字串中空格可匹配任意空白字元(空格、Tab、換行)
  2. != EOF:scanf 成功讀取兩數返回 2,失敗或 EOF 返回 EOF(通常為 -1)
  3. printf("%d\n", a+b):每組結果獨佔一行,符合輸出格式

常見錯誤與避坑

錯誤寫法問題修正
while(scanf(...))若輸入 0 0 返回 2 (真),但 0 0 和後續無輸入同樣返回 0/2 易混淆明確比較 != EOF
忘記 &scanf("%d", a) 傳值而非址,導致段錯誤必須 &a
使用 cin/cout 未關同步大量資料下 C++ I/O 慢可能 TLE加 ios::sync_with_stdio(false); cin.tie(nullptr);

進階:大數版本 (A+B 高精度)

若題目擴充至超大整數(超過 long long),需用字串模擬加法:

// 字串反轉逐位相加,處理進位
char *addStrings(char *a, char *b) { ... }

OJ 刷題建議

  • 先寫 A+B 熟悉提交流程、編譯參數、輸出格式
  • 養成 while(scanf(...)!=EOF) 讀取多測資習慣
  • 注意換行、空格、大小寫完全符合題目要求

掌握這道「入門第一題」,就能輕鬆應對所有「多組測資、EOF 結束」類型的 OJ 題目。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved