程式基本結構 · 複習測驗

10 題涵蓋程式結構、編譯階段、printf/scanf、warning/error · 達 90% 放行
尚未作答
作答後按交卷自動算正確率:≥ 90% 過關完成本主題;未達則回 Quizlet / 講義 複習再測。每題交卷後顯示正解與解析。

Q1輸出是?預測輸出

printf("%d+%d=%d\n", 3, 4, 3+4);

3+4=7。三個 %d 依序替換成 3、4、7(3+4 先算),其餘字元原樣輸出、不自動加空格。

Q2printf("%d", 5 / 2) 的輸出?預測輸出

2。兩個 int 相除是整數除法,去掉小數。要 2.5 得轉型 (float)5/2 或寫 5/2.0

Q3scanf("%d", x)(漏了 &)會怎樣?抓 bug

可能 crash。scanf 要變數的位址才寫得回;傳 x(未初始化的值)當位址會寫到亂處,且編譯器常不警告。要寫 scanf("%d", &x)

Q4#include 在哪個編譯階段被處理?

前處理。所有 # 開頭的指令在編譯之前由前處理器處理(展開 include、去註解)。

Q5呼叫了 printf 但實作沒被接上(undefined reference),錯誤在哪階段?

連結。連結器負責把函式呼叫接到實際的函式庫實作,找不到就報 undefined reference。語法錯則是在「編譯」階段。

Q6關於 warning 與 error,正確的是?概念

error 編不過、warning 能編但常是真 bug。所以標準編譯加 -Wall 把警告打開並清掉。

Q7把 double 印到小數第二位,用哪個格式符?填空

%.2f。%f 印浮點、.2 指定小數位數。用 %d 印 float 是型別不符(未定義行為)。

Q8printf("a\tb") 中的 \t 是?預測輸出

Tab。\t 是跳脫字元,輸出水平定位;\n 才是換行。

Q9main 結尾的 return 0; 代表?

正常結束。0 代表正常、非 0 代表錯誤;終端機 echo $? 可查上一個程式的回傳值。

Q10要讓 5 / 2 得到 2.5,正確做法是?

轉型或讓其一是浮點。(float)5 / 25 / 2.0 觸發浮點除法。只改 %.2f 沒用,因為 5/2 早就在整數階段算成 2。