免費開始練習
中山大學(後西醫) 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);
  • 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. 1 外層初始化 — 設定 i=1 且限制 i < 10,共 9 輪執行
  2. ↓
  3. 2 內層動態計數 — 每輪執行 i 次:第 1 輪 1 次,第 2 輪 2 次...
  4. ↓
  5. 3 累加總和 — 將各輪次數加總:1 + 2 + 3 + ... + 9
  6. ↓
  7. 4 結果產出 — 套用公式 9*(1+9)/2 = 45,輸出 N
🔄 延伸學習:延伸學習:若內層 j < M 則總次數變為 M*(M-1) 的長方形結構
🧠 記憶技巧:外層抓範圍,內層看次數,規律變化的迴圈找級數。
⚠️ 常見陷阱:容易忽略迴圈終止條件(如 i < 10 僅執行到 9),導致計算多一項或少一項。
時間複雜度 Big O 等差級數公式 遞迴函數分析

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題