hce_nsysu
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 的等差級數總和。運用梯形公式計算:
▼ 還有更多解析內容