C语言之猜数字小游戏

`//猜数字小游戏(数字范围为0-100)
//游戏思路
/*
1、游戏界面函数(功能1开始游戏,功能2退出游戏)
2、开始游戏函数(大于或者小于被猜数字输出提示,用户继续输入,直至猜中为止)
3、退出游戏
*/

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//打印菜单
int menu()
{
	printf("*********************\n");
	printf("1、开始游戏\n");
	printf("2、退出游戏\n");
	printf("*********************\n");
	return 0;
}

//开始游戏
int start_game(int target)
{
	while (1)
	{
		printf("请输入您的猜的数字:");
		int to_guess = 0;
		scanf("%d", &to_guess);
		if (to_guess < target)
		{
			printf("您猜的数字小了\n");
		}
		else if (to_guess > target)
		{
			printf("您猜的数字大了!\n");
		}
		else
		{
			printf("猜中了!\n");
			break;
		}
	}
	return 0;
}
int main()
{
    srand((unsigned int)time(0));
	menu();
	printf("请输入你的选择(1、开始游戏 2、退出游戏):");
	int choice = 0;
	scanf("%d",&choice);
	int target = rand() % 100 + 1;
	while (1)
	{
		if (choice == 1)
		{
			start_game(target);
			break;
		}
		else if (choice == 2)
		{
			printf("Game Over!\n");
			break;
		}
		else
		{
			printf("您的输入有误,请重新输入:");
		}
		scanf("%d", &choice);
	}
	system("pause");
	return 0;
}

//这是一个猜数字的小游戏,代码并不难理解,只是有一点我需要给大家解释一下就是关于代码中的随机数函数。 rand()函数它产生的是一个随机数序列,假如你第一次运行之后,答案是45,那么当你第二次输入的时候输入45,就直接猜中了,原因就是rand()函数它产生的是一个固定的随机数序列,那么如何来解决这一漏洞呢?大家可以想想什么东西是一直变化的,毋庸置疑,当然我们最容易想到的就是时间了。所以我加入了srand()函数 ,srand()函数产生一个随机种子,time(0)是一个返回当前时间的时间戳,时间戳就是以1970年1月1日为基准,与此时此刻的一个时间差。时间时时刻刻在变,那么我们产生的随机数序列也就在变化,那么这一漏洞就解决了。运行结果如下试图所示。在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值