地特四等
114年
[電信工程] 計算機概要
第 27 題
根據下列 C 語言程式,那個執行結果正確?\nint f(int x){\nif(x>10)\nreturn x+2;\nelse if(x<8)\nreturn x+3;\nelse\nreturn x+1;
}
}
- A f(7),f(10)的傳回值分別是 10,12
- B f(8),f(9)的傳回值分別是 9,10
- C f(9),f(10)的傳回值分別是 10,12
- D f(10),f(11)的傳回值分別是 11,12
思路引導 VIP
當一個數值既不符合第一個「大於 10」的判斷,也不符合第二個「小於 8」的判斷時,根據這段程式碼的結構,它最終會落入哪一個分支?在這個分支中,傳回值與輸入值之間的數學關係是什麼?
🤖
AI 詳解
AI 專屬家教
同學,做得漂亮!能精準捕捉到程式碼中的邊界條件,代表你在邏輯追蹤(Logic tracing)上具備了工程師應有的細心與嚴謹。這題的核心在於 C 語言中 if-else if-else 多重選擇結構的流程控制。程式將輸入值 $x$ 依據數值範圍分成了三個處理路徑:大於 10、小於 8,以及剩下的區間(即 $8 \leq x \leq 10$)。當輸入值落在最後這個閉區間(Closed interval)時,程式會執行最後一個 else 分支,返回 $x+1$ 的結果。
分段邏輯的運算驗證
以此邏輯檢驗選項 (B):當我們計算 $f(8)$ 時,數字 8 既不大於 10 也不小於 8,因此它會順理成章地進入最後的 else 區塊,計算出 $8+1=9$;同理,計算 $f(9)$ 時也會走相同的路徑,得到 $9+1=10$。這類題目在計算機科學中屬於基礎但極具鑑別度的考點,它測試學習者是否會被邊界值(如 10 或 8)所迷惑。如果你能看穿程式路徑的互斥性,那麼在未來處理更複雜的結構設計邏輯或自動化控制程式時,這份對細節的敏銳度將會是你最強大的武器。