民國115年 普通考試 電子工程 計算機概要

第12題

執行下列C 語言程式碼,輸出為何?#include<stdio.h>int main(){int p =0, q =20;while (p < 3) {int…

題目

執行下列C 語言程式碼,輸出為何?#include<stdio.h>int main(){int p =0, q =20;while (p < 3) {int q=0;p++;q++;}printf(“%d”, q);} A. 2 B. 3 C. 20 D. 23

官方答案

  • 答案:C. 20

解析

關鍵在於變數的作用域(scope)。while 迴圈主體內的 int q=0; 另外宣告了一個區域變數 q,它只在該區塊內有效,會遮蔽(shadow)外層的 q;每次迴圈執行 q++ 只遞增這個內層變數,區塊結束後即消失。外層的 q 自始至終都是 20,從未被修改。迴圈執行 3 次後 p=3 結束,printf 印出的是外層 q,故輸出 20。若誤以為內層 q++ 會累加到外層,才會錯答 3 或 23。

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

官方資料

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