#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 函式宣告
int Randomize(int n);
int main() {
int max_value;
int guess;
int answer;
int attempts = 0;
int lower_bound, upper_bound;
// 初始化隨機數生成器
srand(time(0));
// 輸入最大值並檢查是否大於 20
do {
printf("請輸入答案的可能最大值(至少必須大於20):");
scanf("%d", &max_value);
if (max_value <= 20) {
printf("輸入錯誤!%d 沒有大於 20,請重新輸入!\n", max_value);
}
} while (max_value <= 20);
// 隨機產生答案
answer = Randomize(max_value);
// 設置初始的猜測範圍
lower_bound = 1;
upper_bound = max_value;
// 猜數字遊戲
while (attempts < 10) {
attempts++;
printf("第 %d 次猜答:", attempts);
scanf("%d", &guess);
if (guess == answer) {
printf("結果為:恭喜你猜對了!\n");
break;
} else if (guess < answer) {
lower_bound = guess;
printf("結果為:猜錯了,答案介於 %d 與 %d 之間!\n", lower_bound, upper_bound);
} else {
upper_bound = guess;
printf("結果為:猜錯了,答案介於 %d 與 %d 之間!\n", lower_bound, upper_bound);
}
}
if (attempts == 10 && guess != answer) {
printf("您已經猜了 10 次但仍未猜中答案,正確答案是 %d\n", answer);
}
return 0;
}
// 函式定義
int Randomize(int n) {
return rand() % n + 1;
}
程式說明
初始化隨機數生成器:
srand(time(0)); 初始化隨機數生成器,以確保每次執行程式時產生不同的隨機數。
輸入最大值並檢查是否大於 20:
使用 do-while 迴圈確保使用者輸入的最大值大於 20,如果不符合條件,則提示重新輸入。
隨機產生答案:
使用 Randomize 函式產生一個 1 到 max_value 之間的隨機數作為答案。
設置初始的猜測範圍:
設置 lower_bound 和 upper_bound 變數來追蹤使用者的猜測範圍。
猜數字遊戲的主要邏輯:
使用 while 迴圈讓使用者最多猜 10 次,每次猜測後更新範圍並提示使用者是否猜對。
如果在 10 次內猜對,則顯示「恭喜你猜對了」。
如果 10 次後仍未猜對,則顯示正確答案。