計算前 9 個自然數的和:f = 1 + 2 + 3 + ... + 9。這是學習 C 語言循環結構的經典入門練習。
#include <stdio.h>
#define N 9
void f(int m);
int main() {
f(N);
return 0;
}
void f(int m) {
int i;
int sum = 0;
for (i = 1; i <= m; i++) {
sum += i;
}
printf("1+2+...+9=%d\n", sum); // 輸出: 45
}
#define N 9 避免魔術數字,提高可維護性。f() 中,符合模組化設計原則。sum = 0 初始化,迴圈中 sum += i 累加,是循環累加的標準範式。i <= m 確保包含上界 9。利用等差數列求和公式 sum = n * (n + 1) / 2 可將時間複雜度從 O(n) 降為 O(1):
void f_optimized(int m) {
int sum = m * (m + 1) / 2;
printf("1+2+...+%d=%d\n", m, sum);
}
這體現了「算法優於暴力」的編程哲學。
| 錯誤類型 | 錯誤代碼 | 正確寫法 | 說明 |
|---|---|---|---|
| 未初始化累加器 | int sum; sum += i; | int sum = 0; | 未初始化變量值不確定 |
| 迴圈邊界錯誤 | i < m | i <= m | 漏加最後一項 |
| 變量類型溢出 | 大 n 時用 int | 用 long long | n=100000 時 int 會溢出 |
雖然問題簡單,但蘊含了循環控制、變量初始化、函數封裝、邊界處理等 C 語言核心基礎。建議初學者手寫運行,並嘗試修改為 while/do-while 版本、或計算 1~100 和、偶數和等變體,鞏固循環思想。