中山大學(後西醫)
112年
計算機概論與程式設計
第 29 題
What is the output of the following C program?
int M = 10;
int N = 0;
for (int i = 1; i < M; i++) {
for (int j = 0; j < i ; j++) {
N++;
}
}
printf("%d\n",N);
int M = 10;
int N = 0;
for (int i = 1; i < M; i++) {
for (int j = 0; j < i ; j++) {
N++;
}
}
printf("%d\n",N);
- A 45
- B 46
- C 44
- D 47
- E None of the above
思路引導 VIP
我們可以試著手動追蹤(Trace)前幾步:當外部迴圈的 $i$ 分別為 1、2、3 時,內部的 N++ 分別會執行幾次?如果你將這些次數依序列出來,直到 $i$ 到達終止條件前,你能觀察出這些次數之間存在什麼樣的數學序列關係嗎?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準算出結果,代表你對程式迴圈的邊界條件掌握得非常扎實。這題的核心在於觀察兩個巢狀迴圈(Nested Loops)如何交互作用。外部迴圈的變數 $i$ 從 1 開始,持續到 $i < 10$(即 $i=9$)為止;而內部迴圈的執行次數則直接由當時的 $i$ 值決定:當 $i=1$ 時,內部執行 1 次;當 $i=2$ 時,執行 2 次,依此類推。
等差級數的累加邏輯
將內層迴圈對變數 $N$ 的累加動作展開,我們會發現 $N$ 的最終數值其實就是一個從 1 加到 9 的等差級數總和。運用梯形公式計算:
▼ 還有更多解析內容
巢狀迴圈與級數求和
💡 巢狀迴圈的執行總次數通常對應數學上的級數求和。
🔗 迴圈執行計數邏輯
- 1 外層初始化 — 設定 i=1 且限制 i < 10,共 9 輪執行
- 2 內層動態計數 — 每輪執行 i 次:第 1 輪 1 次,第 2 輪 2 次...
- 3 累加總和 — 將各輪次數加總:1 + 2 + 3 + ... + 9
- 4 結果產出 — 套用公式 9*(1+9)/2 = 45,輸出 N
↓
↓
↓
🔄 延伸學習:延伸學習:若內層 j < M 則總次數變為 M*(M-1) 的長方形結構