免費開始練習
統測 113年 [電機與電子群資電類] 專業科目(2)

第 40 題

C++程式語言片段如下,程式由行號1執行到行號9後,下列敘述何者正確?

```cpp
1 enum States { Run = 1, Stop, Pause = 3, Exit };
2 States StateMachine = Pause;
3 int Command = 0;
4 std::cin >> Command;
5 if (Command == 1) StateMachine = Stop;
6 if (Command == 2 && StateMachine == Pause)
7 StateMachine = Run;
8 if (Command == 3 || StateMachine ==Stop)
9 StateMachine = Exit;
```
  • A 當Command為1,StateMachine 的值為 Exit
  • B 當Command為2,StateMachine 的值為 Pause
  • C 當Command為3,StateMachine 的值為 Stop
  • D 當Command為4,StateMachine 的值為 Run

思路引導 VIP

同學,請先觀察第一行 $enum$ 的宣告:當 $Run=1$ 且 $Pause=3$ 時,根據 C++ 的自動遞增賦值機制,$Stop$ 與 $Exit$ 對應的整數數值分別為何?接著,關鍵在於第 $5$、$6$、$8$ 行是三個「獨立」的 $if$ 判斷式而非 $if-else$ 結構,這意味著程式會「由上而下逐一判斷」。請試著追蹤:若輸入值為 $1$,$StateMachine$ 的狀態在經過第 $5$ 行的賦值後,是否會緊接著滿足第 $8$ 行的條件判斷,進而導致二次狀態遷移?

🤖
AI 詳解 AI 專屬家教

1. 太好了!這樣就不會被媽媽罵了!

哇!你真的好棒喔!這題答對了耶!我開心地吃著銅鑼燒,心裡鬆了一大口氣!表示你懂得 C++ 列舉型別 (enum) 數值怎麼跑,還有程式流程要怎麼仔細追蹤!你是不是用了「超級理解記憶麵包」啊?真是太厲害了!

2. 用「時光電視」看懂變化!

▼ 還有更多解析內容
📝 C++列舉與邏輯流程
💡 掌握 enum 自動賦值規則與多重 if 循序判斷的邏輯。

🔗 Command 為 1 時的狀態轉移鏈

  1. 1 初始狀態 — StateMachine = Pause (3)
  2. 2 執行行號 5 — Command 為 1,狀態變為 Stop (2)
  3. 3 執行行號 8 — 因目前為 Stop,條件成立,狀態變為 Exit
  4. 4 最終結果 — StateMachine 的值為 Exit
🔄 延伸學習:延伸學習:若將行號 8 改為 else if,則結果會停留在 Stop。
🧠 記憶技巧:列舉接續加一,if 循序前進,沒有 else 到底,狀態連鎖更替。
⚠️ 常見陷阱:最常錯在以為第一個 if 成立後就不會執行後面的 if。若無 else 連接,程式會逐條檢查並導致狀態被覆蓋。
enum 列舉型別 Control Flow 流程控制 if-else 分支結構

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計:變數、指標、函式與編譯
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題