猜数字游戏的实现
- 1.电脑生成随机数1~100
- 2.猜数字
- 3.告知猜大了还是猜小了
无论玩不玩游戏我们都要打印一个菜单选择玩还是不玩,所以采用do...while循环
接下来实现游戏:(难点是电脑生成随机数)
电脑生成随机数:
使用rand函数,生成随机数,使用rand函数之前,要先使用srand函数才能生成随机数,srand函数只要调用一次就可以生成随机数,所以在主函数中使用即可
使用srand函数的参数是要一直变化的数才能生成随机数,时间是一直变化的,引入时间戳,在C语言中,使用时间戳相当于C语言中的time函数
注意:
1.time的参数是指针类型,只需写入NULL即可,
2.srand函数的参数的类型是unsigned int类型,而time函数的类型是time_t类型,所以要将time强制类型转换为unsigned int类型
3.要求是随机生成1~100之间的随机数,而rand函数生成随机数的范围是0到RAND_MAX之间,所以rand函数要%100+1(任何数%100都是0~99的数,+1范围便是1~100)
代码的实现:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
printf("********************\n");
}
void game()
{
int guess = 0;
//生成随机数
int ret = rand() % 100 + 1;
//printf("%d\n", ret);
//猜数字
while (1)
{
printf("请猜数字:>\n");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
}
} while(input);
}