void flip(int x) { // 參數 x 未使用
for (x = 1; x <= 100; x++) {
if (filp() == 1) { // ❌ 1. 拼寫錯誤:filp vs flip
// ...
}
}
}
int main() {
int a = 0, b = 0;
srand(time(NULL));
printf("Heads: %d\n", a); // ❌ 2. 統計變量在調用 flip() 前打印,永遠為 0
printf("Tails: %d\n", b);
return 0; // ❌ 3. 未調用 flip() 函數!
}
#include
#include
#include
// 返回 1: 正面, 0: 反面
int flip(void) {
return rand() % 2; // 0 或 1
}
int main(void) {
int heads = 0, tails = 0;
srand((unsigned)time(NULL)); // 種子,僅調用一次
for (int i = 0; i < 100; i++) {
if (flip() == 1) {
heads++;
} else {
tails++;
}
}
printf("Total Heads: %d\n", heads);
printf("Total Tails: %d\n", tails);
return 0;
}
| 錯誤類型 | 原代碼 | 修正 |
|---|---|---|
| 函數名拼寫 | filp() | flip() |
| 統計邏輯位置 | 調用前打印 | 循環內累加,循環後打印 |
| 函數調用缺失 | main 中未調用 flip | for 循環中調用 100 次 |
| 參數設計 | void flip(int x) 參數無用 | int flip(void) 無參返回結果 |
| 隨機數範圍 | 無 | rand() % 2 產生 0/1 |
srand(time(NULL)) **整個程序只調用一次**,通常在 main 開頭rand() 質量一般,關鍵應用用 random() (BSD) 或 C++11 <random>[min, max]:min + rand() / (RAND_MAX / (max - min + 1) + 1)rand_r(&seed) 或 C++ thread_local 引擎「拼寫錯誤、邏輯順序顛倒、函數未調用」是初學者**三大高頻低級錯誤**,養成「寫完先讀一遍、單步調試、單元測試」習慣可避免 90% 此類問題。