C语言实现猜数字游戏

开始之前先推荐一篇博客: 

C语言:素数求解的N种境界_碧瑶的博客呀-CSDN博客_素数求解的n种境界

然后开始今天的重头戏:猜数字游戏。

今天需要用到两个void函数,一个主函数。

我们先写一个菜单

void main()
{
printf("按下1开始游戏\n");
printf("按下2退出游戏\n");
}

这就完成了一个简易菜单的设置,主函数中我们直接调用就行了。

紧接着我们写主函数

#include<stdio.h>
int main()
{

int input = 0;//定义输入数

do
{
    menu()//引用菜单,注意菜单要写在循环的内部这样每次循环才会重新调用菜单

    printf("请选择");
    scanf("%d",&input);
    switch(input)
    {  
      case 1://这里的1和0其实是菜单中说的1和0
            printf("选择正确");
            break;
      case 0:
            printf("选择错误");
            break;
      default:
            printf("输入错误");
            break;
    }
}while(input);//这里注意 do while 循环的书写方式

return 0;
}

 主程序的书写就完成了。

 之后我们还要在case 1 处引用一个game,来作为游戏的主要部分。

void game()
{
//首先我们要一个随机数,在C语言中如何产生随机数呢?我们可以用rand函数
int r = rand;

}

 打开MSDN,我们在这里看到rand使用之前还需要加一个srand来对它进行定义,怎么定义呢,直接srand加上括号就行了。

void game()
{
srand(1)
int r = rand;

}

可是这样会发现只有随着srand的变化,rand的值才会发生变化。如何将srand随机化呢?我们这里就要用到时间戳这一概念了。时间戳是当前时间与计算机起始时间之间的差值,我们在此引用时间戳。

void game()
{
srand(time(NULL))
int r = rand;

}

MSDN上面写道,time_t 说明这是一个指针,让其返回空值那么就可以输出一个数字。

类型转换后,代码变成

srand((unsigned int)time(NULL));

为了避免每一次都要重新同步时间戳,把这行代码放进主函数里面,这样子就可以让产生的数字真正随机。

之后的游戏部分就十分简单

int guess = 0;
	while (1)
	{
		printf("猜数字");
		scanf("%d", &guess);
		if (guess > r)
		{
			printf("大了\n");
		}
		else if (guess < r)
		{
			printf("小了\n");
		}
		else
		{
			printf("恭喜恭喜你猜中了 (*^▽^*) \n");
			break;

 整个程序就完成了

#include<stdlib.h>
#include<time.h>

void menu()
{
		printf("按下 1 开始游戏       \n");
		printf("按下 0 结束游戏      \n");
}

void game()
{
	int r = rand() % 100 + 1;//rand max 为0-32767

	int guess = 0;
	while (1)
	{
		printf("猜数字");
		scanf("%d", &guess);
		if (guess > r)
		{
			printf("大了\n");
		}
		else if (guess < r)
		{
			printf("小了\n");
		}
		else
		{
			printf("恭喜恭喜你猜中了 (*^▽^*) \n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));

	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
				break;
		case 0:
			printf("退出游戏");
				break;
		default:
			printf("选择错误");
				break;
		}
	} while (input);

	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值