本實例實現一個經典的猜數字遊戲:程序隨機生成 1~100 的整數,玩家反覆輸入猜測,程序提示「太大」、「太小」或「猜中」,並根據猜測次數給予不同等級評價,支持重複遊戲。
srand(time(NULL)) 初始化隨機種子,rand() % 100 + 1 生成目標數。caizi()。getchar() 用於吸收換行符,避免 scanf("%c") 讀取到殘留換行符。// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void caizi(void) {
int n;
char begin;
int count = 1;
srand((int)time(NULL));
int m = (rand() % 100) + 1;
puts("遊戲開始,請輸入數字:");
while (1) {
scanf("%d", &n);
if (n == m) {
printf("猜中了,使用了 %d 次!\n", count);
if (count == 1) {
printf("你是神級人物了!膜拜\n");
getchar();
printf("你已經達到最高級別,還需要玩嗎?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
caizi();
else
printf("謝謝,再見!\n");
} else if (count <= 5) {
printf("你是王級人物了!非常贊\n");
getchar();
printf("需要挑戰最高級別不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
caizi();
else
printf("謝謝,再見!\n");
} else if (count <= 10) {
printf("你是大師級人物了!狂贊\n");
getchar();
printf("需要挑戰最高級別不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
caizi();
else
printf("謝謝,再見!\n");
} else if (count <= 15) {
printf("你是鑽石級人物了!怒贊\n");
getchar();
printf("需要挑戰最高級別不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
caizi();
else
printf("謝謝,再見!\n");
} else {
getchar();
printf("你的技術還有待提高哦!重玩? Y/N\n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
caizi();
else
printf("謝謝,再見!\n");
}
break;
} else if (n < m) {
puts("太小了!");
puts("重新輸入:");
} else {
puts("太大了!");
puts("重新輸入:");
}
count++;
}
}
int main(void) {
caizi();
system("pause");
return 0;
}
遊戲開始,請輸入數字:
50
太大了!
重新輸入:
25
太小了!
重新輸入:
40
太大了!
重新輸入:
30
太大了!
重新輸入:
27
太小了!
重新輸入:
28
猜中了,使用了 6 次!
你是大師級人物了!狂贊
需要挑戰最高級別不?Y/N
N
謝謝,再見!
caizi() 可能導致棧溢出,建議改用循環控制重玩邏輯。