输入整数n,想让程序猜到的值,如果程序没有猜中,则提示太大或太小,并让程序接着猜,程序通过二分法不断缩小范围,直到猜中n
时间: 2024-10-07 13:04:28 浏览: 26
-猜数字-C程序设计报告.doc
要使用二分查找算法(也称为折半搜索)来猜测一个给定整数`n`,你可以编写一个递归或非递归的函数,该函数每次都将待检查的范围减半,直到找到正确的答案。以下是一个简单的C语言实现:
```c
#include <stdio.h>
// 声明二分查找函数,参数为数组、范围的起始和结束下标,以及目标值
int binarySearch(int array[], int left, int right, int target) {
if (left <= right) {
// 计算中间位置
int mid = left + (right - left) / 2;
// 如果中间值等于目标值,返回mid
if (array[mid] == target)
return mid;
// 如果中间值大于目标值,说明目标在左半边,更新右边界
else if (array[mid] > target)
return binarySearch(array, left, mid - 1, target);
// 否则,目标在右半边,更新左边界
else
return binarySearch(array, mid + 1, right, target);
}
// 没有找到目标,返回-1表示猜错了
return -1;
}
int main() {
int n, guess;
printf("请输入你要猜的整数n: ");
scanf("%d", &n);
int array[100]; // 假设我们有一个足够大的数组用来存放测试数据
// 初始化数组元素(这里只为了演示,实际应用中可能需要填充)
for (int i = 0; i < 100; ++i)
array[i] = i;
int result = binarySearch(array, 0, 99, n); // 注意数组的索引是从0开始的
if (result != -1)
printf("恭喜,我猜对了!答案是 %d\n", array[result]);
else
printf("抱歉,我猜错了。你给的数字是 %d。\n", n);
return 0;
}
```
在这个例子中,用户输入一个整数`n`,程序会在预定义的数组`array[]`中使用二分查找算法寻找这个数字。如果找到了,就输出结果;否则,提示错误并显示用户输入的实际数值。
阅读全文