首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言猜數字遊戲:選單驅動、隨機數與輸入驗證標準實作

     編輯:關於C

標準實作模式

#include 
#include 
#include 

void menu() {
    puts("********** 1. Start **********");
    puts("********** 0. Exit  **********");
}

int main() {
    srand((unsigned)time(NULL)); // 單次呼叫
    int choice = 1;

    puts("Welcome to Guess Number Game!");

    while (choice) {
        menu();
        printf("Choice: ");
        if (scanf("%d", &choice) != 1) { while(getchar()!='\n'); continue; }

        switch (choice) {
            case 1: {
                int target = rand() % 101;
                int guess;
                while (1) {
                    printf("Guess (0-100): ");
                    if (scanf("%d", &guess) != 1) { while(getchar()!='\n'); continue; }
                    if (guess > target) puts("Too large!");
                    else if (guess < target) puts("Too small!");
                    else { puts("Correct!"); break; }
                }
                break;
            }
            case 0: puts("Goodbye!"); break;
            default: puts("Invalid!");
        }
    }
    return 0;
}

核心最佳實踐清單

  • [x] `srand(time(NULL))` **僅在 `main` 開頭呼叫一次**
  • [x] `rand() % 101` 產生 **0~100** 範圍
  • [x] `scanf` 回傳值檢查 + `getchar()` 清理緩衝區
  • [x] 選單與遊戲邏輯分離(`menu()` 函式)
  • [x] 變數命名語意化(`target`, `guess`, `choice`)
  • [x] 迴圈結構清晰:外層選單、內層猜測

常見錯誤對照表

錯誤寫法後果正確寫法
`srand` 在 `while` 內同秒內多局遊戲答案相同`main` 開頭單次呼叫
`rand() % 100`範圍 0~99,非 0~100`rand() % 101`
無 `scanf` 回傳檢查輸入字母導致無限迴圈`if(scanf(...)!=1) clear_buf()`
魔術數字分散維護困難`#define MAX 100`

總結

猜數字遊戲是 C 語言入門的「Hello World」進階版。掌握**隨機數正確用法、輸入驗證模式、選單狀態機架構**,即可舉一反三開發各類文字互動程式。本文提供的標準實作模式可直接作為專案模板擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved