農會 資訊管理類程式設計110 年第 28 題單選題
以下為C語言程式片段,請問輸出為何?
int a[]={52, 38, 13, 74, 83};
int b=0;
for (int i=0; i<4; i++) {
if (b<a[i]) b=a[i];
}
cout<<b;
A正確答案
本題考查陣列遍歷與條件判斷,注意迴圈終止條件 i<4 會漏掉最後一個元素,求得部分陣列最大值為 74。
為什麼答案是 A
迴圈條件為 i<4,僅比較 a[0]至a[3] (52, 38, 13, 74),其中最大值為 74,故 b 最終值為 74。
考點:陣列遍歷考點:邊界條件考點:邏輯判斷考點:變數追蹤
載入中…
完整詳解
Pro · 無限重點 本題考查陣列遍歷與條件判斷,注意迴圈終止條件 i<4 會漏掉最後一個元素,求得部分陣列最大值為 74。
秒解技巧:看清迴圈條件 i<4 而非 i<5,只比較前四個元素(52,38,13,74),最大值即為 74。
逐選項分析
A陣列遍歷✓ 正確
迴圈條件為 i<4,僅比較 a[0]至a[3] (52, 38, 13, 74),其中最大值為 74,故 b 最終值為 74。
B邊界條件✕ 陷阱
83 是整個陣列 a[4] 的值,但迴圈條件 i<4 不會執行到 i=4,屬於沒看清邊界條件的陷阱。
C邏輯判斷✕
13 是陣列中的最小值,而程式碼邏輯是尋找最大值 (b<a[i]),故不選。
D變數追蹤✕
38 是 a[1] 的值,在比較過程中因為小於當前的 b(52) 而未被替換,非最終結果。
迴圈執行追蹤表
| i | a[i] | b (更新前) | b<a[i]? | b (更新後) |
|---|
| 0 | 52 | 0 | 是 | 52 |
| 1 | 38 | 52 | 否 | 52 |
| 2 | 13 | 52 | 否 | 52 |
| 3 | 74 | 52 | 是 | 74 |
| 4 | 83 | 不執行 | - | - |
陣列長度為 5,但 for 迴圈條件設定為 i<4,故意漏掉最後一個元素 a[4]=83。考生若直覺認為是求整個陣列最大值而秒選 83 就會落入陷阱。