免費開始練習
地特四等 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;
}
  • 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$。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言語法與程式設計基礎
查看更多「[電子工程] 計算機概要」的主題分類考古題