二分查找与猜数字游戏

这篇博客介绍了二分查找算法的原理及其在猜数字游戏中的应用。通过设置left、right和mid变量,逐步缩小查找范围来确定目标数字的位置。此外,还详细解释了如何使用C语言编写猜数字游戏,包括随机数生成、用户输入处理和循环结构的运用,确保游戏可以持续进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二分查找

如果给定一个范围里的数字,我们应该如何查找这个数字在数组中的位置?

这时我们就用到了二分查找的原理。

二分查找的原理是利用了数组下标分组查找,当我们定义一个数组时,我们将数组下标标为0-n作为查找范围,比如

我们定义一个left变量,一个right变量,还有一个mid变量。

left下标可以非常轻松的得知为0。

数组下标的right我们需要用数组长度除以单个数的长度。

假设我们要找的数字是3,我们会首先猜4或者5,【(left+right)/2】如果所猜数字是比给定数字小的话,我们的网查找范围就从0-7变成了0-3/4。

此时left的下标其实并没有变化,但是right的下标变成了mid-1。

反方向同理,当两个下标变成相同时,就找到了这个数字。但如果两个下标相同时也没找到或者left的下标已经比right下标还要大时,就已经超过了数组范围,我们也认为是没找到。

在这里我们是查找了数字2,可以得知下标为1。

猜数字

系统生成一个随机数,我们需要猜出给定数字,游戏可以一直玩下去。遇到这种程序我们该怎么写呢?

猜数字原理与上例的原理相同,都是二分查找,但是却使用了多次分支循环。

首先我们先写主函数,在主函数里,我们首先要选择玩游戏或者退出,为了实现这一个功能,我们首先写一个menu菜单。使用scanf函数来选定是否进行游戏。

在主函数中我们使用input来传递参数并进入switch选择语句,1与0分别表示玩与否。

若玩家选择1,我们可以进入下一条语句,并进入游戏的主程序。

接下来我们来书写游戏的主程序。

首先是一个随机数的生成。我们得知任何一个程序书写的随机数都不是真正的随机数,但是有一个东西却是实实在在发生变化的,那就是时间。

我们本次程序便是利用了c语言中提供的时间戳,将随机数生成并返回给程序。

再接下来就是非常常规的if语句判断大小。

当然,为了游戏可以一直玩下去,我们需要进行循环,于是在主函数外面套上一层do..while循环。

至此,我们的程序便完成了。我们来测验一下。

游戏可以正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值