编写C程序:输入一个任意数,利用二分查找的方法对已按升序排好的一维数组int a[10]找出该数所在位置,如果找到:1)输出查找成功;2)它是第几个数组元素;3)输出该数组元素,否则输出查找不成功。
时间: 2024-10-24 10:18:05 浏览: 22
在C语言中,你可以使用二分查找算法(也称为折半查找)来寻找一个有序数组中的特定值。下面是编写一个实现这个功能的简单示例:
```c
#include <stdio.h>
// 二分查找函数
int binary_search(int arr[], int low, int high, int target) {
if (high >= low) {
int mid = low + (high - low) / 2;
// 如果中间元素正好是我们正在找的目标
if (arr[mid] == target)
return mid; // 返回元素索引
// 如果目标小于中间元素,则在左半部分继续搜索
else if (arr[mid] > target)
return binary_search(arr, low, mid - 1, target);
// 否则在右半部分继续搜索
else
return binary_search(arr, mid + 1, high, target);
}
// 如果数组范围结束仍未找到目标,返回 -1 表示未找到
return -1;
}
int main() {
int a[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; // 一个已排序的整数数组
int size = sizeof(a) / sizeof(a[0]);
int target;
printf("请输入你要查找的数字: ");
scanf("%d", &target);
// 执行二分查找
int result = binary_search(a, 0, size - 1, target);
if (result != -1) {
printf("查找成功!\n");
printf("元素在数组中的位置是 %d。\n", result + 1); // 加1是因为数组索引从0开始
printf("元素值为 %d。\n", a[result]);
} else {
printf("查找不成功!\n");
}
return 0;
}
```
在这个程序中,`binary_search` 函数接受一个数组、起始和结束索引以及目标值。它会在每次递归调用中将搜索区域缩小一半,直到找到目标或搜索区域为空。
运行这个程序后,用户可以输入一个数字,然后程序会返回相应的查找结果信息。
阅读全文