| WA-1 |
= 和 == 搞混 |
3 |
if (x = 5) { ... } |
if (x == 5) { ... } |
| WA-2 |
指派運算子方向搞反 |
2 |
10 = x; |
x = 10; |
| WA-3 |
變數大小寫混用 |
2, 3, 4 |
int myVar; cout << myvar; |
cout << myVar; |
| WA-4 |
Dangling else(else 與 if 匹配錯誤) |
3 |
cpp<br/>if (x > 0)<br/> if (x == 5)<br/> cout << "5";<br/>else<br/> cout << "not 5"; |
加大括號澄清意圖 |
| WA-5 |
連寫比較運算子(Python 習慣) |
3 |
if (a < b < c) |
if (a < b && b < c) |
| WA-6 |
&& / || 優先級錯誤 |
3 |
if (x < 0 || x > 10 && x % 2 == 0) (優先級) |
if ((x < 0 || x > 10) && x % 2 == 0) |
| WA-7 |
迴圈 off-by-one 錯誤 |
4 |
for (int i = 0; i <= n; i++) a[i] = i; (n=10 但陣列只到 9) |
for (int i = 0; i < n; i++) |
| WA-8 |
無窮迴圈 |
4 |
for (int i = 0; i < n; i--) { ... } |
for (int i = 0; i < n; i++) |
| WA-9 |
迴圈邊界 < 和 <= 搞混 |
4 |
for (i = 1; i < n; i++) (應該到 n) |
for (i = 1; i <= n; i++) |
| WA-10 |
continue 跳過必要操作 |
4 |
cpp<br/>for (i=0; i<n; i++) {<br/> if (a[i] > 0) continue;<br/> sum += a[i];<br/>} (應該累加負數) |
重新整理邏輯,確保必要操作不被跳過 |
| WA-11 |
變數 i/j/k/n/m 搞混 |
4, 6 |
for (int i=0; i<n; i++) a[j]++; |
a[i]++ |
| WA-12 |
0\(n-1 和 1\)n 索引搞混 |
4, 6 |
陣列是 0-based,但題目要求 1-based |
先確認題目的索引約定 |
| WA-13 |
整數溢位 |
2 |
int a = 2000000000; int b = a + a; |
long long a = 2000000000LL; long long b = a + a; |
| WA-14 |
未初始化變數 |
2, 4, 6, 7 |
int sum; for (...) sum += a[i]; |
int sum = 0; |
| WA-15 |
函式忘記 return |
7 |
cpp<br/>int add(int a, int b) {<br/> int c = a + b;<br/>} |
cpp<br/>int add(int a, int b) {<br/> return a + b;<br/>} |
| WA-16 |
Pass by value 修改無效 |
7 |
cpp<br/>void inc(int x) { x++; }<br/>int a = 5; inc(a);<br/>cout << a; (輸出 5) |
cpp<br/>void inc(int& x) { x++; }<br/> |
| WA-17 |
max/min 參數型態不一致 |
7 |
long long ans = max(1000000000, 2000000000); |
long long ans = max(1000000000LL, 2000000000LL); |
| WA-18 |
^ 不是指數運算子 |
2 |
int x = 2 ^ 10; (是 XOR,結果是 8) |
long long x = 1LL << 10; (或用 pow) |
| WA-19 |
輸出格式錯誤(空格、換行) |
1 |
cout << a << b << c; (無空格分隔) |
cout << a << " " << b << " " << c; |
| WA-20 |
多組測資忘記重新初始化 |
4, 6, 7 |
上一個測資的 sum 沒清零 |
在每組測資開始時 sum = 0; |