c语言编程 任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
时间: 2024-02-27 21:57:32 浏览: 74
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
好的,这是一个稍微复杂一些的C语言程序,可以用以下代码实现:
```c
#include <stdio.h>
void sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int search(int arr[], int n, int x) {
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[10], n = 10, i, x, index;
printf("请输入10个数:\n");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
sort(arr, n);
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n请输入要查找的数:\n");
scanf("%d", &x);
index = search(arr, n, x);
if (index == -1) {
printf("无此数\n");
} else {
printf("该数是数组中第%d个元素的值\n", index + 1);
}
return 0;
}
```
程序的思路是,首先读入10个整数,然后将它们按由大到小的顺序排列。可以使用简单的冒泡排序算法实现。排列完成后,输出排序后的结果。然后读入一个数,使用折半查找法在数组中查找该数。如果找到了,则输出该数是数组中第几个元素的值。如果没有找到,则输出“无此数”的信息。
阅读全文