C语言 - 猜数字游戏

需求:

计算机产生一个1-100之间随机数,玩家需要输入一个数字,若所猜数字大于随机数,则提示猜大了,若小于随机数,则提示猜小了,重复此过程直到猜对为止,结束本次猜数字游戏,一次游戏结束后可由玩家自己选择继续玩或退出。

步骤:

1.选择流程

当进入此程序,首先给出一个选择菜单由玩家选择

当玩家依照菜单输入选择应有三种结果:

a.输入1,进入游戏

b.输入0,退出游戏

c.输入了1和0之外的数,提示输入错误,并重新输入

int main()
{
	int input = 0;
	do
	{
		//菜单
		menu();
		printf("请选择:>");

		//玩家输入选项
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//玩游戏
			game();
			break;
		case 0:
			//退出游戏
			break;
		default:
			//输入错误
			printf("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

 菜单实现:

void menu()
{
    printf("********************\n");
    printf("****** 1.play ******\n");
    printf("****** 0.exit ******\n");
    printf("********************\n");
}

2.游戏流程

如输入1,就进入游戏

a.产生一个随机数

rand( )函数会返回一个介于 0 - RAND_MAX(32767)的随机整数,此函数与srand( )函数搭配使用

srand( )函数的参数类型是unsigned int型

time( )函数会获取当前日历时间作为time_t类型的值,返回一个时间戳,由于我们计算机的时间是每时每刻都在发生变化的,因此随机值是不同的

使用rand( ),srand( )函数要引用头文件<stdlib.h>

使用time( )函数要引用头文件<time.h>

b.玩家猜数,并给出提示

guess > 随机数,提示猜大了,继续猜

guess < 随机数,提示猜小了,继续猜

guess == 随机数,提示猜对了,本次猜数结束

代码实现:

#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()
{
	//任何数除100后的余数范围都是0-99,再加1为1-100
	int ret = rand()%100+1;
	int guess = 0;
	while (1)
	{
		printf("请猜数字:>\n");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了\n");
			continue;
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
			continue;
		}
		else
		{
			printf("恭喜您,猜对了\n");
			break;
		}
	}
}

int main()
{
	int input = 0;

	//强制类型转换为unsigned int型
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	//当玩家选择0时,退出游戏,而此时条件判断为假,退出循环
	//而选择非0时,判断为真,循环继续
	return 0;
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值