在C語言課程設計中,經常遇到如下循環:
for(x=0, y=10; (y>8) && (x<4); x++, y--);
許多初學者認為循環體執行4次,但參考答案給出3次。這究竟是怎麼回事?
我們來詳細追蹤每一次迭代的變量變化:
| 階段 | x值 | y值 | 條件(y>8 && x<4) | 循環體是否執行 |
|---|---|---|---|---|
| 初始化 | 0 | 10 | - | - |
| 第1次判斷 | 0 | 10 | true (10>8 且 0<4) | 是 (第1次) |
| 第1次迭代後 | 1 | 9 | - | - |
| 第2次判斷 | 1 | 9 | true (9>8 且 1<4) | 是 (第2次) |
| 第2次迭代後 | 2 | 8 | - | - |
| 第3次判斷 | 2 | 8 | false (8>8 為假) | 否 |
參考答案給出的「3次」通常是指條件判斷的次數,而非循環體執行次數。這是一道經典的「陷阱題」,考察對for循環執行流程的精確理解:先判斷,再執行體,最後執行遞增/遞減表達式。
遇到複雜for循環時,建議採用「表格法」或「手寫跟蹤法」逐步記錄變量變化,切勿憑直覺判斷。