地特四等申論題
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)。
▼ 還有更多解析內容