本單元常犯錯誤總覽
| # | 錯誤描述 | 類型 | ✗ 錯誤寫法 | ✓ 正確寫法 |
|---|---|---|---|---|
| 1 | 迴圈邊界差 1(off-by-one) | 邏輯錯誤 | for (int i=1; i<10; i++) 想輸出 1-10 |
for (int i=1; i<=10; i++) |
| 2 | 無窮迴圈 | 邏輯錯誤 | for (int i=0; i<10; i--) |
for (int i=0; i<10; i++) |
| 3 | 忘記迴圈更新 | 邏輯錯誤 | while (i < 10) { cout << i; } |
while (i < 10) { cout << i; i++; } |
| 4 | continue 跳過必要操作 | 邏輯錯誤 | 在 continue 後放關鍵程式碼 |
把程式碼放在 continue 前 |
| 5 | break 只離開一層 | 邏輯錯誤 | 巢狀迴圈用 break 想跳出兩層 |
用布林旗標或重新結構化 |
| 6 | 變數範圍超出迴圈 | 編譯錯誤 | for (int i=0;i<10;i++){} cout<<i; |
在迴圈外宣告 i |
| 7 | 混用 ++i 和 i++ 導致結果不保證 |
危險寫法 | int x = i + ++i; |
分開寫:x = i; ++i; x += i; |
| 8 | 沒估計就寫、程式太慢 | TLE | n = 10^5 還用巢狀迴圈(約 10^{10} 次) | 先數運算次數估秒數,太慢就換做法 |