Q28.
下列迴圈k 的初值為10,終值2,增值為-2,下列何者正確?
數位電子 · 乙級 · 程式語言 · Q28
難易度分析
2 / 5
此題考查 C 語言 for 迴圈結構中,變數更新語法的正確性。判斷重點在於區分僅進行算術運算而不改變變數值的表達式,與能將運算結果重新賦值給變數的複合運算子之間的差異。
正確答案:①for(k=10;k<=2;k-=2)
① for(k=10;k<=2;k-=2):複合指定運算子 `k-=2` 是正確的遞減語法,等價於 `k=k-2`,能正確將變數 k 每次迴圈執行後遞減 2。此為 C 語言標準的指定運算子縮寫形式。
錯誤選項解析
- ② for(k=10;k<=2;k-2):`k-2` 僅為一個算術運算式,並未將結果存回變數 k 中,因此 k 的值不會改變,會造成無窮迴圈。正確寫法應使用 `k-=2` 或 `k=k-2`。
- ③ for(k=10;k<=2;k=--k):`--k` 是前置遞減運算子,每次僅遞減 1 而非 2,且將 `--k` 的結果再指定回 k (`k=--k`) 屬於多餘且不良的寫法,不符合題目要求的增值 -2。
- ④ for(k=10;k<=2;k=-2):`k=-2` 是將常數 -2 直接指定給 k,而非遞減 2。這會使 k 在第一次迴圈後就變成 -2,完全偏離迴圈計數器的預期行為。
Learning Tip
"此類題型常考 for 迴圈的三段式語法:`for(初值; 條件; 遞增/減)`。關鍵陷阱在於區分複合指定運算子(如 `k-=2`)與純運算式(如 `k-2`)的差異。實務上,遞減迴圈的終止條件應使用 `>=`(如 `k>=2`),而非 `<=`,否則迴圈不會執行。此外,`++`/`--` 運算子每次僅變化 1,若需變化多值必須使用複合指定運算子。"
學員答題分佈
①for(k=10;k<=2;k-=2)0%
②for(k=10;k<=2;k-2)0%
③for(k=10;k<=2;k=--k)0%
④for(k=10;k<=2;k=-2)0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!