二分查找
如果给定一个范围里的数字,我们应该如何查找这个数字在数组中的位置?
这时我们就用到了二分查找的原理。
二分查找的原理是利用了数组下标分组查找,当我们定义一个数组时,我们将数组下标标为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循环。

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

游戏可以正常运行。