國家安全情報人員考試五等考試-資訊組資料處理大意106 年第 38 題單選題
下列有關 C 語言中迴路的敘述,何者錯誤?
Afor 敘述的起始運算式,在迴路開始前執行一次,以後即不再執行
Bfor 敘述中的迴路主體至少會被執行一次正確答案
Cdo -while 敘述是先執行迴路中的敘述,再判斷條件是否成立,即 do-while 中的敘述最少會被執行一次
Dwhile 敘述是先測試條件判斷式是否成立,如果成立才執行迴路中的敘述
B正確答案
for 迴圈若起始條件即不成立,主體一次都不會執行;do-while 才保證至少執行一次。
為什麼答案是 B
錯誤!for 是「先判斷再執行」,若條件一開始就不成立(如 for(i=10; i<5; i++)),迴路主體 0 次都不會執行。這題要選的錯誤敘述就是它。
載入中…
完整詳解
Pro · 無限重點 for 迴圈若起始條件即不成立,主體一次都不會執行;do-while 才保證至少執行一次。
記住口訣:「for/while 先檢查可能 0 次,do-while 先做保證 1 次」。
逐選項分析
A✕
for(init; cond; update) 的 init 起始運算式確實只在迴圈開始前執行一次,之後每輪只執行 cond 判斷與 update,敘述正確。
B✓ 正確
錯誤!for 是「先判斷再執行」,若條件一開始就不成立(如 for(i=10; i<5; i++)),迴路主體 0 次都不會執行。這題要選的錯誤敘述就是它。
C✕ 陷阱
do-while 把條件判斷放在主體之後,所以無論條件是否成立,主體都保證至少執行一次,敘述正確。這是與 while/for 最大的差別。
D✕
while(cond){…} 是前測式迴圈,先測條件再執行主體,條件不成立則主體 0 次,敘述正確。
C 語言三種迴圈比較
| 迴圈類型 | 判斷時機 | 最少執行次數 | 典型用途 |
|---|
| for | 進入前判斷 | 0 次 | 已知次數迴圈 |
| while | 進入前判斷 | 0 次 | 未知次數、條件控制 |
| do-while | 執行後判斷 | 1 次 | 至少跑一次,如選單輸入驗證 |
本題把「do-while 至少執行一次」的特性偷換到 for 上。考生若只記「迴圈都會執行」就中招。記住:只有 do-while 保證執行,for 與 while 都可能一次都不跑。