C语言练习题-C语言练习题实例94
题目:编写一个猜谜游戏的程序。
程序分析:猜谜游戏中,程序会随机生成一个数字,然后玩家需要猜测这个数字是多少。程序会根据玩家猜测的数字给出相应的提示,直到玩家猜中为止。在这个练习中,我们使用 srand()
函数和 rand()
函数生成随机数,并使用 time()
函数作为随机数的种子。通过循环、条件判断和计数器,实现了猜谜游戏的逻辑。
实例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void caizi(void) {
int n;
char begin;
int count = 1;
srand((unsigned 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();
return 0;
}
以上实例运行输出结果为:
游戏开始,请输入数字:
50
太大了!
重新输入:
25
太小了!
重新输入:
40
太大了!
重新输入:
30
太大了!
重新输入:
27
太小了!
重新输入:
28
猜中了,使用了 6 次!
你是大师级人物了!狂赞
需要挑战最高级别不?Y/N
N
谢谢,再见!
在这个猜谜游戏的程序中,我们首先使用 srand()
函数和 rand()
函数生成一个随机数 m
,范围是1到100之间。然后,程序会提示玩家输入数字进行猜测,通过 scanf()
函数将输入的数字存储在变量 n
中。程序会根据玩家的猜测给出相应的提示,直到玩家猜中为止。
在程序中,我们使用了循环和条件判断来实现游戏的逻辑。计数器 count
用于记录玩家猜测的次数。根据玩家猜中的次数,程序会给出不同的评价,并询问玩家是否继续挑战更高级别的游戏。如果玩家选择继续挑战,则递归调用 caizi()
函数再次进行游戏,否则程序结束。
注意,在程序中使用 getchar()
函数来消耗输入缓冲区中的换行符,以避免输入的字符被误读。在接收字符输入之前,我们使用空格字符来忽略换行符。