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

C語言實作猜數字遊戲:入門經典完整教學

     編輯:關於C語言

遊戲簡介

猜數字是 C 語言初學者最經典的練習專案之一。程式隨機生成 0~100 之間的整數,玩家反覆輸入猜測,程式提示「大了」「小了」直到猜中。本文提供完整、可直接編譯執行的原始碼,並解析關鍵邏輯。

完整原始碼

#include 
#include 
#include 

void print_menu() {
    printf("**********************\n");
    printf("******* 1.start ******\n");
    printf("******* 0. exit ******\n");
    printf("**********************\n");
}

int main() {
    int input = 1;
    printf("歡迎使用猜數字遊戲\n");
    while (input) {
        print_menu();
        printf("請選擇> ");
        scanf("%d", &input);
        switch (input) {
            case 1: {
                int n = 0, ch = 0;
                srand((unsigned int)time(NULL));   // 以當前時間為種子
                n = rand() % 101;                  // 產生 0~100 隨機數
                while (1) {
                    printf("請猜一個(0-100)之間的數\n");
                    scanf("%d", &ch);
                    if (ch > n) {
                        printf("你猜大了\n");
                    } else if (ch < n) {
                        printf("你猜小了\n");
                    } else {
                        printf("恭喜你,猜對了\n");
                        break;
                    }
                }
                break;
            }
            default:
                printf("遊戲退出\n");
                break;
        }
    }
    system("pause");
    return 0;
}

核心知識點解析

1. 隨機數生成 srand() / rand()

  • srand((unsigned)time(NULL)):以當前時間秒數為種子,確保每次執行序列不同。
  • rand() % 101:取模得到 0~100 範圍整數。

2. 選單迴圈 while(input)

讓玩家可連續遊玩多局,輸入 0 結束。

3. 判斷邏輯 if-else 結構

三向分支:大於、小於、等於,猜中時 break 跳出內層迴圈。

常見錯誤與改進建議

  • 輸入驗證:scanf 回傳值未檢查,非數字輸入會導致無限迴圈。建議檢查回傳值或使用 fgets+sscanf。
  • 跨平台暫停:system("pause") 僅限 Windows。Linux/macOS 可改用 getchar() 組合。
  • 隨機種子重複:若在極短時間內多次執行,time(NULL) 可能相同。進階可結合 clock() 或 getpid()。

延伸練習

  1. 限制猜測次數(如最多 7 次)。
  2. 記錄最少猜測次數的高分榜(寫入檔案)。
  3. 增加難度選項:範圍 0~1000、0~10000。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved