使用数组编程。有15个数存放在一个数组中,输入一个数要求用折半查找法 找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数.要 找的数用 scanf 函数输入。C语言
时间: 2024-12-14 07:24:48 浏览: 18
在C语言中,你可以使用二分查找(也称为折半查找)算法来在一个已排序的数组中寻找特定的数值。以下是实现这个功能的基本步骤:
```c
#include <stdio.h>
// 定义二分查找函数
int binarySearch(int arr[], int left, int right, int target) {
if (right >= left) {
int mid = left + (right - left) / 2;
// 如果目标值等于中间元素
if (arr[mid] == target)
return mid;
// 如果目标值小于中间元素,搜索左半部分
else if (arr[mid] > target)
return binarySearch(arr, left, mid - 1, target);
// 否则搜索右半部分
else
return binarySearch(arr, mid + 1, right, target);
}
// 如果找不到目标,返回 -1 表示不存在
return -1;
}
int main() {
int arr[15]; // 假设数组已经初始化了
int n; // 数组长度
printf("Enter the size of the array: ");
scanf("%d", &n);
// 其他14个元素的输入...
for (int i = 0; i < n; ++i) {
printf("Enter element %d: ", i+1);
scanf("%d", &arr[i]);
}
int target;
printf("Enter a number to search: ");
scanf("%d", &target);
// 调用二分查找函数
int result = binarySearch(arr, 0, n-1, target);
// 输出结果
if (result != -1)
printf("The number is at index %d.\n", result);
else
printf("There's no such number in the array.\n");
return 0;
}
```
在这个程序中,用户首先输入数组的大小以及每个元素。然后,他们输入一个要查找的目标数,`binarySearch`函数会返回该数在数组中的位置,如果没有找到就返回-1。
阅读全文