二分法 做个猜数字小游戏

目录

代码如下

随机数

所用函数


话接上回,在介绍二分法的时候,我通过猜数字游戏让大家了解,那么现在我们就利用二分法把猜数字游戏写出来吧。

代码如下

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

void youxi()
{
	int b = rand();
	int c = b % 100 + 1;
	while (1)
	{
		int d = 0;
		scanf("%d", &d);
		if (d > c)
		{
			printf("大了\n");
		}
		else if (d < c)
		{
			printf("小了\n");
		}
		else
		{
			printf("猜对啦,再来一局吧!!!\n");
			break;
		}
	}
 }

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

		
 while (1)
	{	
		printf("********1-100的猜数字游戏*******\n");
		printf("*********1.play   2.退出********\n");
		printf("********************************\n");
		printf("请输入-》 \n");
		int a = 0;
		scanf("%d", &a);
		if (a == 1)
		{
			printf("游戏开始!!!\n");
			youxi();
		}
		if (a == 2)
		{
			goto tuichu;
		}
		if (a != 1 && a != 2)
		{
			printf("输入错误\n");
		}
	}

tuichu:
	return 0;
}

随机数

首先猜数字游戏,肯定要有一个数给我们猜,这个数得是我们预料不到的,那就是随机

这就得用到rand函数,不过rand有一个缺点,那就是每次运行的随机数是相同的,如第一次是42,3,677,56.。。。。。。。。。。。。。但是第二次也是42,3,677,56.。。。。。。。。。。。

这不是真正的随机,我们叫它伪随机数。这里我们需要用srand来解决,srand决定rand的随机数的第一个数,但是呢srand需要一个参数,srand会根据这个参数提供一个值,那么问题又来了,如果提供的值相同的话,srand所给得值也会相同,所以我们得给srand一个在不断变化的值,可是这样不就又绕回来了吗??????,,,这里我们引入一个概念: 时间戳 现在的时间减去1970年1月1日的秒数 时间是在不断变化的,所以时间戳也在不断的变化,所以时间戳符合我们的条件。

解决完随机数,剩下的对你们来说应该就是洒洒水啦,如果有不明白的可以看看我的二分法介绍文章

所用函数

Rand  生成随机数,但是每次运行生成的是同一组数  头文件《stdlib.h》

Srand  给他一个变化的值。。。。(设置生成的随机数的起点)

Time  可返回一个时间戳  头文件 《time.h》  (现在的时间减去1970年1月1日的秒数,所以是不断变化的) 参数为指针

  整个工程调用一次就就行,  NULL:空指针  time类型实际为ll ,给他强制转换成int类型,因为Srand 参数为int。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值