猜數字遊戲是初學 C 語言時極佳的練習題目,能同時鍛鍊隨機數生成、迴圈控制、條件判斷與使用者互動等核心觀念。本文將帶你從零開始,逐步完成一個具備選單介面、隨機題目產生與猜測提示功能的完整小遊戲。
程式啟動後先顯示歡迎選單,讓玩家選擇「開始遊戲」或「離開」。選擇開始後,系統會隨機產生一個 0 到 100 之間的整數作為答案。玩家反覆輸入猜測數字,程式會依據輸入值提示「猜大了」、「猜小了」或「猜對了」,猜中即結束當局並回到主選單。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
printf(" 歡迎使用猜數字遊戲! \n");
printf("\n");
printf("************************\n");
printf("\n");
printf("******** 1-<start ******\n");
printf("******** 0-<exit *******\n");
printf("\n");
printf("************************\n");
int input = 1;
while (input) {
printf("請選擇->:");
scanf("%d", &input);
switch (input) {
case 1: {
int n; // 正確答案
int m; // 玩家猜測值
srand((unsigned int)time(NULL)); // 以目前時間為種子
n = rand() % 101; // 產生 0~100 隨機數
while (1) {
printf("請輸入一個0-100之間的數:");
scanf("%d", &m);
if (m > n) {
printf("你猜大了!\n");
} else if (m < n) {
printf("你猜小了!\n");
} else {
printf("你猜對了!\n");
break; // 猜中跳出內層迴圈
}
}
break;
}
default: {
printf("遊戲退出!\n");
break;
}
}
}
system("pause");
return 0;
}
srand((unsigned int)time(NULL)) 確保每次執行產生不同序列,避免固定答案。rand() % 101 取餘數將隨機數壓縮至 0~100 區間。while(input) 控制主選單重複顯示;內層 while(1) 持續接收猜測直到答對為止。scanf 讀取整數,實務上建議搭配緩衝區清理以防非數字輸入導致死循環。若想讓遊戲更豐富,可嘗試加入以下功能:
透過這個小專案,你將熟悉 C 語言的標準庫函式、控制結構與使用者介面設計基礎,為後續更複雜的專案打下堅實基礎。