C语言 -猜数字游戏

这里实现一个猜数字游戏, 具体的游戏环节就是:
1.由计算机随机产生一个数字;
2.我们玩家再输入一个数字;
3.比较这两个数字的大小关系;
4.没有猜对的话会让玩家一直猜, 直到猜对为止

我们先上一段代码:

void Game()
{
	srand((unsigned int)time(0)); //时间戳
	int num = rand() % 100 + 1;   //产生1-100的随机整数
	while (1)
	{
		int guess = 0;
		printf("输入你猜的数字:\n");
		scanf("%d", &guess);

		if (guess < num)
		{
			printf("猜小了, 再试一次!\n");
		}

		else if (guess > num)
		{
			printf("猜大了, 再试一次!\n");
		}

		else
		{
			printf("恭喜你猜对了!\n");
			break;
		}
	}
}

上面就是实现游戏环节的关键代码, 我们先认识几个函数:

int rand( void ); 作用是生成一个伪随机数

在这里插入图片描述
rand函数返回一个伪随机整数, 范围为0到RAND_MAX, 在调用rand之前, 使用srand函数播种伪随机数生成器
在这里插入图片描述
那么RAND_MAX是多大呢??
在这里插入图片描述
常数RAND_MAX是rand函数可以返回的最大值, RAND_MAX定义为值0x7fff
16进制数0x7fff转换为10进制数大小为32767, 因为范围实在太大, 所以代码中我们的 rand() % 100是为了产生0-99范围的随机整数
rand() % 100 + 1; 产生的就是1-100以内的随机整数

我们再看看srand函数
在这里插入图片描述

void srand( unsigned int seed ); 作用是设定随机起点

参数seed是rand()的种子, 用来初始化rand()的起始值

time函数
在这里插入图片描述

time_t time( time_t *timer ); 获取系统时间

在这里插入图片描述
根据系统时钟, 时间函数返回自1970年1月1日午夜(00:00:00)以来协调的通用时间经过的秒数, 返回值存储在计时器给定的位置, 此参数可以为NULL, 在这种情况下, 不存储返回值。

完整代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void Game()
{
	srand((unsigned int)time(0)); //时间戳
	int num = rand() % 100 + 1;   //产生1-100的随机整数
	while (1)
	{
		int guess = 0;
		printf("输入你猜的数字:\n");
		scanf("%d", &guess);

		if (guess < num)
		{
			printf("猜小了, 再试一次!\n");
		}

		else if (guess > num)
		{
			printf("猜大了, 再试一次!\n");
		}

		else
		{
			printf("恭喜你猜对了!\n");
			break;
		}
	}
}

int Menu()
{
	printf("\n");
	printf("             ######################################             \n");
	printf("             *            1. 猜数字               *             \n");
	printf("             *            2. 退出                 *             \n");
	printf("             ######################################             \n");
	printf("\n");
	
	int choice = 0;
	printf("请输入你的选择:\n");
	scanf("%d", &choice);
	return choice;
}

int main()
{
	while (1)
	{
		int choice = Menu();
		if (choice == 1)
		{
			Game();
		}

		else if (choice == 2)
		{
			printf("退出游戏\n");
			break;
		}

		else
		{
			printf("你的输入有误, 请重新选择:\n");
		}
	}
	return 0;
}
运行结果截图:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值