國家安全情報人員考試五等考試-資訊組資料處理大意114 年第 26 題單選題
下列為 Java 撰寫的程式碼,
int count = 0;
do {
if (count*2 > (count+10)/2) {
break;
}
count++;
} while (count >0);
請問下列答案何者正確?
Ado while 將成為無窮迴圈
Bdo while 將執行 5 次以上,就會因觸發 break 退出正確答案
Cdo while 將執行 4 次以下,就會因觸發 break 退出
Ddo while 迴圈不會執行
B正確答案
逐次代入 count 值判斷 count*2 > (count+10)/2 何時成立,找出觸發 break 的次數。
為什麼答案是 B
代入:count=0→0>5 否;=1→2>5 否;=2→4>6 否;=3→6>6 否;=4→8>7 成立 break。進入迴圈第 5 次時觸發 break,故執行 5 次以上才退出。
載入中…
完整詳解
Pro · 無限重點 逐次代入 count 值判斷 count*2 > (count+10)/2 何時成立,找出觸發 break 的次數。
整數除法 (count+10)/2 會無條件捨去,逐次代入比較即可。
逐選項分析
A✕
條件會在 count=4 時成立並 break,不會無窮執行。
B✓ 正確
代入:count=0→0>5 否;=1→2>5 否;=2→4>6 否;=3→6>6 否;=4→8>7 成立 break。進入迴圈第 5 次時觸發 break,故執行 5 次以上才退出。
C✕ 陷阱
第 4 次 (count=3) 時 6>6 為 false,尚未觸發 break,必須進到第 5 次才成立,非 4 次以下。
D✕
do-while 至少執行一次,且首次迴圈 count=0 時條件判斷後 count++ 可繼續,迴圈必然執行。
逐次迴圈追蹤表
| 第幾次 | count 值 | count*2 | (count+10)/2 | 是否 break |
|---|
| 1 | 0 | 0 | 5 | 否 |
| 2 | 1 | 2 | 5 | 否 |
| 3 | 2 | 4 | 6 | 否 |
| 4 | 3 | 6 | 6 | 否 |
| 5 | 4 | 8 | 7 | ✅ break |
考生常誤以為 count=3 時 (6>6) 會 break,但 > 為嚴格大於,相等時不成立。另整數除法 (count+10)/2 會捨去小數,例如 count=2 時 12/2=6 而非 6.0,需特別留意 Java 整數運算規則。