当学完循环(for while dowhile)和分支(if switch)后,我们就可以实现一个简单的猜数字游戏了
游戏规则:程序产生一个伪随机数(在这里我们让它产生的随机数在1~100之间),参与者从键盘输入一个数,程序将该数与随机数对比,反馈二者的大小关系给参与者,若没有猜对,参与者继续输入数字,程序继续给出反馈,最多猜五次
代码实现如下:
#include<stdio.h>
#include<stdlib.h>//srand rand 的头文件
#include<time.h>//time 的头文件
void menu()
{
printf("******************\n");
printf("*****请选择:<*****\n");
printf("*****1. play******\n");
printf("*****0. exit******\n");
printf("******************\n");
}
void game()
{
srand((unsigned int)time(NULL));//利用时间戳来无时无刻地改变生成随机数的“种子”
int ret = rand()%100+1;//ret来存放生成的随机数:1~100
int count = 5;//记录剩余机会
int guess= 0;//存放输入的数
while (count)
{
printf("剩余机会:%d次\n", count);
printf("请输入您心目中的数字:");
scanf("%d",&guess);
if (guess < ret)
{
printf("猜小了\n");
printf("\n");
printf("\n");
printf("\n");
}
else if (guess > ret)
{
printf("猜大了\n");
printf("\n");
printf("\n");
printf("\n");
}
else
{
printf("猜对了!\n");
printf("要猜的数字是:%d\n", ret);
printf("\n");
printf("\n");
printf("\n");
break;
}
count--;
}
if (count == 0)
{
printf("很遗憾,五次机会用完,游戏失败。要猜的数字是:%d\n", ret);
printf("\n");
printf("\n");
printf("\n");
}
}
int main()
{
int input=0;//此参数为参与者输入的数
do
{
menu();//首先打印菜单,供参与者选择是否进行游戏
scanf("%d", &input);
switch (input)
{
case 1:
printf("欢迎进入游戏\n");
printf("\n");
printf("\n");
printf("\n");
game();//进行游戏
break;
case 0:
printf("已退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");//输入的数可能非0非1
printf("\n");
printf("\n");
printf("\n");
}
} while (input); //循环继续的条件是input为真。当输入1时,进入游戏,一轮游戏结束后,跳出了
//switch,再次进入while选择是否继续下一局;当输入0时,直接退出,不再做任
//何操作;当输入其他数时,因输入不正确,再次进入循环选择是否参与游戏
return 0;
}
运行结果如下: