目录
一、大概功能
首先,我们需要了解最终需要实现的功能
运行结果如下:
我们可以看到,首先出现一个菜单选项,供我们选择
在选择开始后提示我们输入猜的数字
并且输入之后提示我们是否才对,如果猜小了或者猜大了都会进行提示
那么,现在就让我们开始实现以上功能吧~
二、功能的实现
在这里,我们运用do-while语句来实现
1、菜单部分
首先创建一个菜单,可以直接在do-while语句中用printf打印,也可以创建一个函数,这里我选择创建函数
我们可以先运行检测一下
出现了很多次,这是为什么呢?
原来是我们在循环条件中输入了1,导致出现了死循环
所以在我们平常写代码时要一步一运行,这样更好的可以判断是否出错,不至于写完之后不知道错误出在哪,找一半天,我在之前的文章中也有说到过(http://t.csdn.cn/stfTW——这是一篇关于寻找素因子的文章,感兴趣的可以看看哦~~~)。
那么,我们是要在输入选项后来进行后面的操作,所以我们需要用一个值来接收,然后进行之后的操作,那么循环条件就根据输入的值来判断就行,输入1则开始游戏,输入0则退出
其中switch函数就是来执行选择之后的不同的操作
同样,我们运行看一下
现在菜单部分已经完成了实现,接下来实现游戏部分
2、游戏部分
游戏部分我们写一个game函数来实现
开始游戏后,首先会提示你输入要猜的数字,猜错后又会提示你再猜,所以这里也是一个循环
可以看到运行是完全正确的,那么这是一个固定的值,怎么才能让它随机出值?
这就涉及到了rand函数
什么是rand函数,通过查找得到一下注释
这个的意思是:rand的返回值是一个随机的从0~RAND_MAX的整数数值,而RAND_MAX的值是32767,也就是说rand的返回值在0~32767之间,包含的头文件为stdlib.h
我们可以给它设定一下范围,那怎么设定呢?
可以这样设定
x = rand()%10 //x的范围即为0~9
x = rand()%10+1 //x的范围即为1~10
x = rand()%100+1 //x的范围即为1~100
而我们要使用rand函数就需要设置一个随机数生成器srand函数,而它需要一个随机数种子,随机数种子可以任意给定,但是我们在多运行几次后会发现问题
第一次运行
第二次运行
每次重新运行的产生的结果都是一样的
问题就出在随机数种子上,每一个随机数种子里面的都是一样的,那么我们就需要一个一直变化的随机数种子
而是什么是一直变化的呢?是时间,所以我们引用时间戳(time函数)来当做随机数种子
time函数是一个储存时间的函数,所以将它当做随机数种子正合适,它所包含的头文件为time。h
srand((unsigned)time(NULL))
这样就设置好了 ,以后出现的数就是随机的了,并且每次运行都会不一样
看这样小游戏就做好啦!
最后,源代码奉上
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**************************\n");
printf("***** 1、开始 *****\n");
printf("***** 0、退出 *****\n");
printf("**************************\n");
}
void game()
{
int c = 0;
int x = rand() % 10 + 1;//设定范围为1~10
while (1)
{
printf("请输入要猜的数字:");
scanf("%d", &c);
if (c > x)
printf("猜大啦!\n");
else if (c < x)
printf("猜小啦!\n");
else
{
printf("猜对啦~~\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while(input);
return 0;
}
还有什么不懂的可以来找博主哦~~
喜欢的话记得三连哦~~~
感谢支持!!!