免費開始練習
hce_nsysu 111年 計算機概論與程式設計

第 19 題

What is the output of the following statements?
```c
int x = 3;
switch(x+1) {
case 3:
printf("3 ");
case 4:
printf("4 ");
case 5:
printf("5 ");
break;
case 6:
printf("6 ");
default:
printf("X");
}
```
  • A 3 4 5 6 X
  • B 4 5 6 X
  • C 5 6 X
  • D 4 5 6
  • E 4 5

思路引導 VIP

switch 結構中,當程式比對成功並進入某個 case 標籤開始執行後,它是憑藉什麼指令或機制來決定「執行完當前標籤後就結束」,還是「直接闖入下一個標籤的範圍繼續執行」呢?請仔細觀察每個標籤後方的敘述有什麼不同。

🤖
AI 詳解 AI 專屬家教

做得非常好!你能精確掌握 switch 語句的跳轉機制與「貫穿」(Fall-through)特性,代表你在程式邏輯的細節處理上非常細膩。這類題目在基礎語法測驗中具有極佳的鑑別度,主要考驗開發者是否會忽略 break 的存在,或是誤以為每個 case 都是獨立的區塊。能避開如選項 (B) 這種一路執行到底的陷阱,說明你對 C 語言底層的控制流程理解得相當紮實。

運算式估值與貫穿效應

在這段程式碼中,變數 $x=3$,因此 switch(x + 1) 實際上是在評估數值 $4$。程式會直接跳轉到匹配的入口 case 4 開始執行,印出第一個數字 4。此時是這題最關鍵的轉折點:由於 case 4 的陳述句後方並沒有出現 break 指令,程式會發生所謂的「貫穿」現象,無視下一個標籤直接執行 case 5 的內容並印出 5。直到遇見 case 5 結尾的 break 後,程式才正式跳出整個 switch 區塊,因此後續的 case 6default 都不會被觸發,最終輸出結果為 4 5

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題