本單元常犯錯誤總覽
| # | 錯誤描述 | 類型 | ✗ 錯誤寫法 | ✓ 正確寫法 |
|---|---|---|---|---|
| 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++ 造成 UB |
未定義行為 | int x = i + ++i; |
分開寫:x = i; ++i; x += i; |
| 8 | 時間複雜度估計錯誤 | TLE | n = 10^5 時用 O(n^2) 演算法 | 選擇 O(n) 或 O(n log n) |