Q52.
執行下列C 語言程式,其輸出結果為何?
數位電子 · 甲級 · 程式語言 · Q52
難易度分析
3 / 5
題目要求推斷程式輸出,核心在於理解 if 之後若直接接分號,該分號為空敘述,後續語句不受此條件控制。此陷阱需注意條件式與分號之關係,屬於中等難度的典型測驗題。
正確答案:④HelloHi
④ HelloHi:正確。`x=5` 使外層 `if(x==5)` 成立進入區塊;內層 `if(x!=5);` 因條件為假且帶有尾隨分號成為空敘述,不影響後續 `printf("Hello")` 的執行;最後 `printf("Hi")` 必然執行,故輸出為 "HelloHi"。
錯誤選項解析
- ① 編譯錯誤:此程式語法正確,if 條件式後接分號是合法的空敘述(null statement),不會造成編譯錯誤。
- ② Hi:僅輸出 "Hi" 是錯誤的。因為外層 `if(x==5)` 成立後,內層 `if(x!=5);` 的分號使其成為空敘述,其後的 `printf("Hello")` 不受內層 if 控制而必然執行,故會先印出 "Hello" 再印出 "Hi"。
- ③ Hello:僅輸出 "Hello" 是錯誤的。第 8 行的 `printf("Hi")` 位於外層 if 區塊之外,屬於獨立敘述,無論條件如何都會執行。
Learning Tip
"此題核心考點為 if 敘述後的分號陷阱。當 `if(條件);` 帶有分號時,該分號即為 if 的空本體,其後的大括號或敘述將不再受該 if 控制。實務上應避免在 if 條件後誤加分號,以免造成邏輯流程偏離預期。另外需注意 `==`(比較)與 `=`(賦值)的區別,此題 `x==5` 為正確的比較運算。"
學員答題分佈
①編譯錯誤0%
②Hi0%
③Hello0%
④HelloHi0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!