C语言编写一个程序,包括主函数和函数。要求: (1)主函数中输入10个无序的整数。(10分) (2)用冒泡排序法从大到小排序。(10分) (3) 要求输入一个整数,用折半查找法找出该数。若存在,在主函数中输出其所处的位置,否则,指出此数不在数组中。(10分)
时间: 2024-02-21 18:57:08 浏览: 65
好的,下面是C语言编写的程序,满足您的要求:
```c
#include <stdio.h>
/*冒泡排序函数*/
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) { //从大到小排序
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/*折半查找函数*/
int binary_search(int arr[], int len, int key) {
int low = 0, high = len - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == key) {
return mid; //找到了
} else if (arr[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1; //没找到
}
int main() {
int arr[10], i, key, pos;
printf("请输入10个无序的整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, 10); //排序
printf("排序后的数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n请输入要查找的整数:\n");
scanf("%d", &key);
pos = binary_search(arr, 10, key); //查找
if (pos >= 0) {
printf("%d 在数组中的位置为:%d\n", key, pos + 1);
} else {
printf("%d 不在数组中\n", key);
}
return 0;
}
```
这个程序中,`bubble_sort`函数用于实现冒泡排序,`binary_search`函数用于实现折半查找。在`main`函数中,首先输入10个无序的整数,然后对它们进行冒泡排序,输出排序后的数组。接着,输入要查找的整数,用折半查找法找出该数。如果找到了,输出其所处的位置;否则,输出该数不在数组中。
阅读全文