用C语言编写一个程序:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
时间: 2024-12-06 07:21:09 浏览: 24
在C语言中,你可以使用折半查找(Binary Search)算法来实现这个功能。以下是对应的代码示例:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid; // 找到了目标,返回其索引
if (arr[mid] < target)
low = mid + 1; // 目标在右侧,缩小搜索范围
else
high = mid - 1; // 目标在左侧,缩小搜索范围
}
return -1; // 数字不存在于数组中
}
int main() {
int arr[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int size = sizeof(arr) / sizeof(arr[0]);
int target;
int index;
printf("请输入一个数字:");
scanf("%d", &target);
index = binarySearch(arr, 0, size - 1, target);
if (index != -1)
printf("该数在数组中的位置是 %d\n", index + 1);
else
printf("无此数。\n");
return 0;
}
```
当用户输入一个数字后,`binarySearch` 函数会在排序好的数组中搜索目标数。如果找到了,返回它的索引;如果没有找到,返回 `-1` 表示该数不在数组中。
阅读全文