改進重點
- 將選單顯示封裝為
menu() 函式。
- 修正亂數種子:需包含
<time.h> 並呼叫 srand((unsigned)time(NULL))。
- 修正變數初始化順序。
完整程式碼
#include
#include
#include
void menu() {
printf("***************************\n");
printf("***********1>start*********\n");
printf("***********2>exit *********\n");
printf("***************************\n");
}
int main() {
int input = 1, n = 0, ch = 0;
printf("****歡迎使用猜數字遊戲*****\n");
while (input) {
menu();
printf("請選擇>\n");
scanf("%d", &input);
switch (input) {
case 1:
srand((unsigned int)time(NULL));
n = rand() % 101;
while (1) {
printf("請輸入一個 0-100 之間的數\n");
scanf("%d", &ch);
if (ch < n) {
printf("你猜小了\n");
} else if (ch > n) {
printf("你猜大了\n");
}
if (ch == n) { // 獨立 if 確保猜中即 break
printf("恭喜你猜對了\n");
break;
}
}
break;
default:
printf("退出遊戲\n");
break;
}
}
system("pause");
return 0;
}
與 v1 差異比較
| 項目 | v1 (195007) | v2 (本文) |
| 選單 | 獨立函式 print_menu() | 獨立函式 menu() |
| 亂數種子 | 正確 | 正確 |
| 判斷結構 | if-else if-else | 兩個獨立 if + 獨立 if 判斷相等 |
| 標頭檔 | 含 time.h | 含 time.h |
潛在問題
scanf 無輸入驗證,非數字輸入會導致無限迴圈。
system("pause") 僅限 Windows。