C语言2、编写一个程序,包括主函数和函数。要求: (1)主函数中输入10个无序的整数。(10分) (2)用冒泡排序法从大到小排序。(10分) (3) 要求输入一个整数,用折半查找法找出该数。若存在,在主函数中输出其所处的位置,否则,指出此数不在数组中。
时间: 2024-02-21 11:58:17 浏览: 63
好的,下面是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 (key == arr[mid]) {
return mid;
} else if (key < arr[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
int main() {
int arr[10], i, key, index;
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");
// 折半查找
printf("请输入需要查找的数:\n");
scanf("%d", &key);
index = binary_search(arr, 10, key);
if (index == -1) {
printf("该数不在数组中。\n");
} else {
printf("该数在数组中的位置为:%d\n", index);
}
return 0;
}
```
程序中,我们首先从用户处输入10个无序的整数,并调用`bubble_sort()`函数实现冒泡排序,将数组从大到小排序。然后,用户需要输入需要查找的数,我们调用`binary_search()`函数实现折半查找,返回该数在数组中的位置或者表明该数不在数组中。
希望这个代码能够帮助到你!
阅读全文