Q104.
依據下列仿C 語言之程式語法結構,若以Pass-by-reference 方式進行參數傳遞,程式在執行後,下列之結果哪些是正確的?

電腦軟體設計共同科目 · 乙級 · Q104
難易度分析
4 / 5
本題屬於程式邏輯追蹤題,需精確區分引用傳遞對原始變數的影響,且涉及動態索引的變數操作,要求對記憶體狀態變更過程有極高精確度的分析,加上複數選擇的格式,增加了判別難度。
正確答案 (複選):③, ④
- ③ list[3]=4:`list[3]` 在整個程式執行過程中未被任何 swap 呼叫修改,維持初始值 4,因此此選項正確。
- ④ list[4]=5:`list[4]` 在整個程式執行過程中未被任何 swap 呼叫修改,維持初始值 5,因此此選項正確。
錯誤選項解析
- ① list[1]=2:Pass-by-reference 下,經過三次 swap 呼叫後,`list[1]` 最終值為 3 而非 2。第一次 `swap(value, list[1])` 使 `list[1]` 變為 1,第二次 `swap(list[1], list[2])` 使 `list[1]` 變為 3。
- ② list[2]=3:Pass-by-reference 下,`list[2]` 最終值為 2 而非 3。第二次 swap 將 `list[2]` 設為 1,第三次 `swap(value, list[value])`(此時 value=2)將 `list[2]` 與 value 交換,使 `list[2]` 變為 2。
Learning Tip
"Pass-by-reference 的核心考點在於理解參數傳遞時,函式內對參數的修改會直接影響原始變數。此題常考陷阱在於第三次 `swap(value, list[value])` 中的 `list[value]` 是動態索引,需先確認 `value` 的當前值(此時為 2)才能正確追蹤 `list[2]` 的變化。建議逐步追蹤每次 swap 後各變數的狀態,避免混淆 Pass-by-value(不影響原值)與 Pass-by-reference(影響原值)的差異。"
學員答題分佈
①list[1]=20%
②list[2]=30%
③list[3]=40%
④list[4]=50%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!