民國112年 地方四等 電子工程 計算機概要
第30題
執行下列C 程式,輸出結果為何?#include <stdio.h>int i = 2, j = 1;void sub(int *m, int *n) {*m…
題目
執行下列C 程式,輸出結果為何?#include <stdio.h>int i = 2, j = 1;void sub(int *m, int *n) {*m = i + *n;*n = j + *m;printf("(%d, %d)", *m, *n);printf("(%d, %d)", i++, j++);}int main(void) {sub(&i, &j);printf("(%d, %d)", i, j);return 0;} A. (2, 4)(2, 4)(3, 5) B. (3, 4)(3, 4)(4, 5) C. (3, 5)(3, 5)(4, 6) D. (2, 4)(1, 2)(2, 3)
官方答案
- 答案:B. (3, 4)(3, 4)(4, 5)
解析
全域變數 i=2、j=1。呼叫 sub(&i,&j) 後,*m 即 i、*n 即 j。先執行 *m = i + *n = 2+1 = 3,i 變成 3;再執行 *n = j + *m = 1+3 = 4,j 變成 4,所以第一個 printf 印出 (3, 4)。第二個 printf 使用後置遞增 i++、j++,會先輸出原值 3、4,之後 i、j 才分別變成 4、5,故仍印出 (3, 4)。回到 main 再印 i、j 得 (4, 5)。合計輸出 (3, 4)(3, 4)(4, 5)。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。