免費開始練習
地特四等申論題 106年 [資訊處理] 程式設計概要

第 四 題

四、試問下列 C++程式碼逐一執行後,Value 與 list 輸出結果各為多少?(25 分) void swap_ref(int &a, int &b) { int temp; temp = a; a = b; b = temp; } void swap(int a, int b) { int temp; swap_ref(a, b); temp = a; a = b; b = temp; } void main() { int Value = 5, list[3] = { 1,2,3 }; swap(Value + list[2]++, ++list[0]); swap_ref(list[0], ++list[2]); }
📝 此題為申論題

思路引導 VIP

本題測驗核心在於「參數傳遞方式(傳值呼叫 vs 傳參考呼叫)」以及「遞增運算子(前置 ++x vs 後置 x++)」的求值順序與副作用。解題時需逐行紀錄變數的記憶體狀態,特別留意 Call by value 不會改變外部變數,而 Call by reference 會直接修改傳入的變數本身。

🤖
AI 詳解 AI 專屬家教

【解題思路】運用程式追蹤(Code Tracing)方法,釐清「傳值呼叫」與「傳參考呼叫」之差異,並精確推演前置與後置遞增運算子的副作用。 【詳解】 已知:初始狀態為 Value = 5,陣列 list = {1, 2, 3}(即 list[0]=1, list[1]=2, list[2]=3)。

▼ 還有更多解析內容

升級 VIP 解鎖