要实现的功能:
- 自动产生一个1~100的随机数。
- 猜数字 - a、猜大了,就恭喜你,游戏结束 b、猜错了,会告诉你是猜大了还是猜小了
- 这个游戏你可以一直玩,直到游戏结束
首先我们要制作一个菜单:
#includevoid menu() { printf("####################n"); printf("#### 1.paly #####n"); printf("#### 0.exit #####n"); printf("####################n"); } int main() { menu(); printf("进入或者退出(1/0):"); return 0; }
这个菜单会打印输出一个菜单;然后提示你是进入游戏还是退出游戏。这时我们需要从键盘上输入一个数并且要判断这个数是1/0/其他,然后用分支语句分别对输入的数做出不同的行为。
int main()
{
int imput = 0;
menu();
printf("进入或者退出(1/0):");
scanf("%d", &imput);
switch (imput)
{
case 1:
game();
break;
case 0:
printf("退出游戏n");
break;
default:
printf("输错了,请重新输入n");
break;
}
return 0;
}
由于我们要实现游戏可以一直玩,知道游戏结束,那么我们可以将主函数中的部分代码放入do - while循环当中,来实现这个功能。
不管imput输入的是什么,循环体都会先走一遍,然后再判断是不是要再进入循环。当imput的值为非0时,循环再次执行;当imput为0时,循环结束,游戏结束。
然后我们就要对进入游戏后要做的事进行编写了。我们的目的是要实现一个1~100的随机数。在C语言中有一个随机数生成函数:rand()。
void game()
{
int rej = rand();
printf("%dn", rej);
}
但是这里我们发现,我们每次退出程序,再进入游戏,这个随机数都是41,这不符合我们想要的随机数的想法。这里的问题在于这个随机数生成函数在使用的时候需要使用srand()函数对其进行设定。下面是库函数rand()和srand()的说明。rand()和srand()的使用需要引入头文件
#include
那么我们应该怎样设置才能让这个数字随机起来呢,我们需要使用srand函数对rand函数进行设定,srand就是给rand随机数设定一个初识的值,就是从哪开始的。
srand((unsigned)time(NULL));
这里所用到的time函数,是使用了时间戳的概念。时间戳就是将系统现在的时间和初始的时间相减,得出的一个差值。
那么当我们把这个时间戳参数给srand函数之后,可以看到现在的每个随机数都离得很近,不是我们希望的那种随机数(也就是不够随机),为了解决这个问题,我们将这个srand函数放到循环外面,整个程序中只对rand设置一次,这样这个数就足够随机了。
接下来我们就要允许玩游戏的人输入一个数,然后程序对这个数和随机生成的数进行比较,然后给出提示来让玩游戏的人继续猜直到猜中。
全部代码:
#include#include void menu() { printf("####################n"); printf("#### 1.paly #####n"); printf("#### 0.exit #####n"); printf("####################n"); } void game() { int rej = rand()%100+1; int guess = 0; while (1) { printf("请输入猜的数:"); scanf("%d", &guess); if (guess < rej) { printf("猜小了n"); } else if (guess > rej) { printf("猜大了n"); } else { printf("恭喜你猜对了!!!n"); break; } } } int main() { int imput = 0; do { srand((unsigned)time(NULL)); menu(); printf("进入或者退出(1/0):"); scanf("%d", &imput); switch (imput) { case 1: game(); break; case 0: printf("退出游戏n"); break; default: printf("输错了,请重新输入n"); break; } } while (imput); return 0; }
这里对int rej = rand()%100+1 进行解释:rand()%100是一个0~99的余数,余数加一正好符合我们的需求。
游戏运行的效果为:
一定要认真地去理解这个程序的逻辑结构!加油吧!



