目录:
一.打印一个菜单
二.生成随机数
三.猜数字(猜1~100中的一个随机数)
四.详细过程
一.打印一个菜单
void menu()
{
printf("********************\n");
printf("** 1.play **\n");
printf("** 0.exit **\n");
printf("********************\n");
}
二.生成随机数
这里引出rand函数,rand函数是专门用来生成随机数的,
其返回的是0~RAND_MAX(32767)之间的一个随机数。
但是我们发现光用rand函数,每一次调试后打开都是一样的数字,这样游戏就不能长期玩了。
这时就需要用到srand函数,来设置随机数生成起点
srand(0);
用了srand函数后又发现,你如果想要随机数,就得放进去一个随机数,不然都是一样的数字。
这不是搞笑吗?
这时又想到了“时间戳”
C语言中time函数会传来时间戳
srand((unsigned int)time(NULL));//NULL就是0,是空指针
用了时间戳后,又发现,
如果两次按的比较快,发现数字太相近了
但是srand函数只需要调用一次就行了,而我们猜数字游戏用到了循环,所以,放进main函数就行,数字就不会相近了。
记得我们要生成的1~100的随机数
int ret=rand()%100+1;
三.猜数字
while (1)
{
printf("猜数字:\n");
scanf("%d", &num);
if (num < ret)
{
printf("猜小了\n\n");
}
else if (num == ret)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num > ret)
{
printf("猜大了\n\n");
}
}
}
四.详细过程
#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()
{
//1.生成随机数
//2.猜数字
while (1)
{
printf("猜数字:\n");
scanf("%d", &num);
if (num < ret)
{
printf("猜小了\n\n");
}
else if (num == ret)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num > ret)
{
printf("猜大了\n\n");
}
}
}
int main()
{//打印一个菜单
int input = 0;
srand((unsigned int)time(NULL));
printf("来玩猜数字游戏吧!\n");
do
{
menu();
printf("请选择:\n");
scanf("%d", &input);
switch(input)
{
case 1:
game();//game 函数中是猜数字的整个逻辑
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}