7.从键盘输入一整数,然后在一个整型一维数组 a[20]中,用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印”No found”。
时间: 2024-02-12 21:09:09 浏览: 77
好的,这是一个简单的折半查找的问题,以下是示例代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int a[20] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39};
int n = 20, x;
printf("请输入要查找的整数:\n");
scanf("%d", &x);
int pos = binarySearch(a, n, x);
if (pos != -1) {
printf("%d 是数组中第 %d 个元素的值。\n", x, pos + 1);
} else {
printf("No found\n");
}
return 0;
}
```
在上面的代码中,我们定义了一个名为 `binarySearch` 的函数,它采用了折半查找法来查找数组中的元素。在 `main` 函数中,我们首先定义了一个整型数组 `a`,然后从键盘输入一个整数 `x`,并调用 `binarySearch` 函数来查找该整数在数组中的位置。如果该整数不在数组中,则输出 `No found`。
阅读全文