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

電腦軟體設計共同科目 · 乙級 · Q103
難易度分析
3 / 5
本題要求分析特定參數傳遞方式對陣列數值的影響,屬於複選題型,需逐一判定所有選項的對錯。由於涉及程式執行邏輯的推演,且包含容易混淆的記憶體傳遞機制,增加了認知負荷與判別難度。
正確答案 (複選):③, ④
- ③ list[3]=4:因三次 `swap` 皆為 Pass-by-value,所有交換僅在函式內的區域變數進行,原陣列 `list` 完全未被修改,故 `list[3]` 維持初始值 4。
- ④ list[4]=5:同理,Pass-by-value 不會改變呼叫端的實際參數,`list[4]` 維持初始值 5 不變。
錯誤選項解析
- ① list[1]=3:Pass-by-value 傳遞時,`swap(value, list[1])` 僅交換區域變數的副本,不影響原陣列,故 `list[1]` 仍為 2 而非 3。
- ② list[2]=2:第二次呼叫 `swap(list[1], list[2])` 同樣是 Pass-by-value,區域變數交換不影響原陣列,故 `list[2]` 仍為 3 而非 2。
Learning Tip
"本題核心考點為 Pass-by-value(傳值呼叫) 與 Pass-by-reference(傳址呼叫) 的差異。在 Pass-by-value 下,函式接收的是參數的副本,任何修改僅影響區域變數,不會回傳至呼叫端。若要真正交換變數值,需使用 指標(pointer) 或 Pass-by-reference。常見陷阱是誤以為 `swap` 函式能改變原陣列內容。"
學員答題分佈
①list[1]=30%
②list[2]=20%
③list[3]=40%
④list[4]=50%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!