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

C 語言終端機猜數字遊戲完整實作:隨機數生成、選單與迴圈控制

     編輯:關於C語言

C 語言終端機猜數字遊戲完整實作:隨機數生成、選單與迴圈控制

完整程式碼

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

void menu() {
    puts("*********************");
    puts("歡迎進入猜數字遊戲!");
    puts("1. 開始遊戲");
    puts("0. 退出");
    puts("*********************");
}

void game(int target) {
    int guess;
    while (1) {
        printf("輸入猜測 (1-100): ");
        if (scanf("%d", &guess) != 1) {
            puts("輸入無效");
            while (getchar() != '\n'); // 清緩衝區
            continue;
        }
        if (guess < target) puts("太小了");
        else if (guess > target) puts("太大了");
        else { puts("恭喜猜中!"); break; }
    }
}

int main() {
    srand((unsigned)time(NULL));
    int choice;
    do {
        menu();
        printf("選擇: ");
        if (scanf("%d", &choice) != 1) { while(getchar()!='\n'); continue; }
        switch (choice) {
            case 1: game(rand() % 100 + 1); break;
            case 0: puts("再見!"); break;
            default: puts("無效選項");
        }
    } while (choice != 0);
    return 0;
}

關鍵點解析

  1. 隨機數種子:srand(time(NULL)) 僅在程式啟動時呼叫一次。
  2. 範圍控制:rand() % 100 + 1 產生 1~100 (注意 rand() 偏差,教學足夠)。
  3. 輸入驗證:檢查 scanf 返回值,清理緩衝區防無限迴圈。
  4. 模組化:menu/game 分離,主迴圈清晰。

進階改進

  • 限制猜測次數。
  • 記錄最少猜測次數 (最高分)。
  • 使用 getline + strtol 替代 scanf 更健壯。

此程式為初學者練習流程控制、函數、隨機數、I/O 的絕佳專案。

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