用c语言编写一个程序,包括主函数和如下子函数。(1) 输入10个无序的整数; (2) 用起泡方法从大到小排序; (3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。
时间: 2024-12-14 07:23:48 浏览: 23
C语言函数-子函数-主函数与子函数的调用
5星 · 资源好评率100%
下面是一个简单的C语言程序,它满足了你的要求:
```c
#include <stdio.h>
// 子函数:输入10个无序整数
void input_numbers(int arr[], int n) {
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Numbers before sorting: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// 子函数:使用起泡排序对数组进行降序排列
void bubble_sort_descending(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 子函数:折半查找
int binary_search(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] > target)
high = mid - 1;
else
low = mid + 1;
}
// 如果目标不存在于数组中
return -1;
}
// 主函数
int main() {
int arr[10], position;
int n = 10;
// 输入10个数字
input_numbers(arr, n);
// 排序
bubble_sort_descending(arr, n);
// 输出排序后的数组
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 搜索指定整数
printf("Enter a number to search: ");
scanf("%d", &target);
position = binary_search(arr, 0, n - 1, target);
if (position != -1)
printf("Number found at index %d.\n", position);
else
printf("Number not found. Inserting it at the end of the array.\n");
return 0;
}
```
在这个程序中,我们首先定义了输入、排序和搜索的功能,并在主函数中将它们结合起来。用户会先输入10个整数,然后我们使用起泡法将其降序排列,最后搜索用户输入的目标数,并根据其是否存在返回相应的插入位置。如果目标不在数组中,则会提示插入相应的位置。
阅读全文