問題詳情

19.以下 C 程式印出的結果為何?
#include
void swap(int a, int b){
int temp; 
temp = a; a=b; b=a; }
int main(){
int a=5, b=10;
swap(a,b);
printf("%d,%dn",a,b); } 
(A) 5,10
(B) 10,5
(C) 10,10
(D) 5,5

參考答案

答案:A
難度:計算中-1
書單:沒有書單,新增

用户評論

【用戶】不叫賭俠的陳小刀

【年級】高三下

【評論內容】在 swap 函數中,temp 變數用來暫存 a 的值。接著,將 a 的值設為 b,看起來這是正確的交換步驟。但是接下來,將 b 的值再次設為 a,這導致 b 的值又變回原來的值。換句話說,a 和 b 的值並未真正交換。因為 swap 函數中的參數是按值傳遞的,所以在函數內部對參數的修改不會影響到 main 函數中的變數 a 和 b。在 main 函數中呼叫 swap(a, b) 後,a 和 b 的值仍然是 5 和 10,因此執行 printf("%d,%d ", a, b); 會輸出 5,10。

【用戶】不叫賭俠的陳小刀

【年級】高三下

【評論內容】在 swap 函數中,temp 變數用來暫存 a 的值。接著,將 a 的值設為 b,看起來這是正確的交換步驟。但是接下來,將 b 的值再次設為 a,這導致 b 的值又變回原來的值。換句話說,a 和 b 的值並未真正交換。因為 swap 函數中的參數是按值傳遞的,所以在函數內部對參數的修改不會影響到 main 函數中的變數 a 和 b。在 main 函數中呼叫 swap(a, b) 後,a 和 b 的值仍然是 5 和 10,因此執行 printf("%d,%d ", a, b); 會輸出 5,10。