用c语言用折半查找算法查询给定的一个数 x 是否在一个容量为17 int ﹣类型数组中,数组的定义为 it al10]={2,3,6,8,11,15,19,56,61,99), x 通过键盘输入。另外, 把数组所有元素输出到文本文件 d :\ student \ myout . txt 。(用 fprintf函数)
时间: 2023-08-12 18:05:33 浏览: 40
下面是代码实现:
```c
#include <stdio.h>
int main() {
int arr[10] = {2, 3, 6, 8, 11, 15, 19, 56, 61, 99};
int x;
printf("请输入要查找的数x:");
scanf("%d", &x);
// 折半查找
int left = 0, right = 9;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
printf("找到了!x在数组中的下标为:%d\n", mid);
break;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
if (left > right) {
printf("未能找到!\n");
}
// 输出到文件
FILE* fp;
fp = fopen("d:\\student\\myout.txt", "w");
for (int i = 0; i < 10; i++) {
fprintf(fp, "%d ", arr[i]);
}
fclose(fp);
return 0;
}
```
其中,折半查找的部分采用了经典的二分法思想,每次找到数组中间位置,然后将待查找的数与中间位置的数进行比较,依次缩小查找范围。如果最终左指针大于右指针,则说明未能找到。输出到文件采用了 `fprintf()` 函数,将数组中的元素逐个输出到文件中。