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

C語言實現猜數字遊戲:使用函數、隨機數、限制猜測次數

     編輯:C 語言問答

需求分析

  • 程序生成一個 0-100 之間的隨機整數。
  • 用戶反覆輸入猜測值,程序提示「大了」或「小了」。
  • 猜中後顯示猜測次數。
  • 最多允許猜 20 次。
  • 要求使用函數模組化。

完整代碼實現

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void guess_game(int target);

int main(void) {
    srand((unsigned)time(NULL)); // 初始化隨機種子
    int secret = rand() % 101;   // 生成 0-100 的隨機數
    printf("=== 猜數字遊戲 ===\n");
    printf("我已想好一個 0 到 100 之間的整數,你有 20 次機會。\n");
    guess_game(secret);
    return 0;
}

void guess_game(int target) {
    int guess, count = 0;
    while (count < 20) {
        printf("第 %d 次猜測: ", count + 1);
        if (scanf("%d", &guess) != 1) {
            printf("輸入無效,請輸入整數。\n");
            while (getchar() != '\n'); // 清理緩衝區
            continue;
        }
        count++;
        if (guess > target) {
            printf("輸入過大!\n");
        } else if (guess < target) {
            printf("輸入過小!\n");
        } else {
            printf("恭喜!猜中了!答案是 %d。\n", target);
            printf("你總共猜了 %d 次。\n", count);
            return;
        }
    }
    printf("很遺憾,20 次機會用盡。正確答案是 %d。\n", target);
}

關鍵點說明

  1. 隨機數種子:srand(time(NULL)) 確保每次運行生成不同序列。
  2. 函數解耦:guess_game 專注遊戲邏輯,main 負責初始化,結構清晰。
  3. 輸入健壯性:檢查 scanf 返回值,防止非數字輸入導致死循環。
  4. 次數限制:循環條件 count < 20 精確控制最多嘗試次數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved