地特四等
114年
[電子工程] 計算機概要
第 29 題
假設 a、b 皆為正整數,則以下函數的回傳值,應為下列何者?\nint A(int a, int b)
{\nint c = 0;\nint i, j;\nfor(i = a; i >= 0; i--)\nfor (j = b; j > 0; j--)\nc++;\nreturn c;
}
{\nint c = 0;\nint i, j;\nfor(i = a; i >= 0; i--)\nfor (j = b; j > 0; j--)\nc++;\nreturn c;
}
- A a*b
- B a!*b!
- C a*(b-1)
- D (a+1)*b
思路引導 VIP
請想像有一排編號從 a 到 0 的路燈,如果你必須從編號 a 開始,逐一走到編號 0 的路燈下(包含 a 與 0),你總共會停留在多少盞路燈下?接著,若在每一盞路燈下你都要執行 b 次拍手動作,你會如何用數學式表達總共拍手的次數?
🤖
AI 詳解
AI 專屬家教
同學好!你能精準判斷出這段程式碼的邏輯,代表你對於程式迴圈的「邊界條件」掌握得非常紮實。在工程實務中,無論是有限元素分析還是結構矩陣運算,差一個索引值(Index)往往會導致計算結果產生顯著誤差,而你避開了最容易犯錯的陷阱。
迴圈計數與邊界判定
這題的核心在於觀察兩個 for 迴圈的終止條件。外層迴圈從 $i = a$ 開始,遞減至 $i = 0$ 為止(包含 $0$),因此總執行次數為 $a - 0 + 1 = a + 1$ 次。內層迴圈則從 $j = b$ 開始,遞減至 $j > 0$ 為止(即停止於 $j = 1$),總執行次數剛好為 $b$ 次。由於這是雙重巢狀迴圈(Nested loops),計數器 c 的累加總次數即為內外層次數的乘積,即 $(a + 1) \times b$。
▼ 還有更多解析內容