民國111年 地方四等 電子工程 計算機概要

第31題

執行下列C++程式碼後,螢幕印出的數字為何?int f(int* m, int n){int tmp;tmp=*m; *m=n; n=tmp;}int main…

題目

執行下列C++程式碼後,螢幕印出的數字為何?int f(int* m, int n){int tmp;tmp=*m; *m=n; n=tmp;}int main( ){int a=1, b=2, c=3, d=4, e=5, g=6;f(&a,b); f(&c,d); f(&e,g);f(&a,c); f(&a,d);cout<<a<<endl;return 0;} A. 3 B. 4 C. 5 D. 6

官方答案

  • 答案:B. 4

解析

關鍵在於 f 的第一個參數是傳址(int*),第二個參數 n 是傳值。函式內 `*m=n` 會改到呼叫者變數,但 `n=tmp` 只改到函式內部的副本,不影響呼叫端,所以每次呼叫只會把第一個引數改成第二個引數的值。依序計算:f(&a,b) 使 a=2;f(&c,d) 使 c=4;f(&e,g) 使 e=6;f(&a,c) 使 a=4;f(&a,d) 使 a=4(d 仍為 4)。最後 a 的值為 4,輸出 4,故選 B。若誤以為 n 也會回寫,可能算出其他數值,但傳值參數不會改變呼叫端變數,因此 A、C、D 皆非正確結果。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料

答案以考選部公告之測驗式試題標準答案 PDF 為準。