用c语言写一个查找数组中的中位数,要求使用2个自定义函数 1)自定义函数sort实现数组排序 2)自定义函数medi查找并输出当前数组中位数
时间: 2024-02-11 10:03:56 浏览: 60
好的,以下是代码实现:
```c
#include <stdio.h>
void sort(int arr[], int n); // 自定义函数sort实现数组排序
float medi(int arr[], int n); // 自定义函数medi查找并输出当前数组中位数
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
sort(arr, n);
printf("排序后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
float median = medi(arr, n);
printf("中位数为:%.2f\n", median);
return 0;
}
void sort(int arr[], int n) {
int temp;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
float medi(int arr[], int n) {
float median;
if (n % 2 == 0) {
median = (float)(arr[n / 2 - 1] + arr[n / 2]) / 2.0;
} else {
median = (float)arr[n / 2];
}
return median;
}
```
解释一下代码的实现过程:
1. 首先在主函数中获取数组长度和数组元素;
2. 调用自定义函数 `sort` 进行数组排序;
3. 输出排序后的数组;
4. 调用自定义函数 `medi` 查找并输出当前数组中位数。
其中,自定义函数 `sort` 使用冒泡排序算法对数组进行排序,自定义函数 `medi` 则根据数组元素个数的奇偶性进行不同的中位数计算,并将计算结果返回给主函数。
注意,为了保证精度,中位数的数据类型为 `float`。
阅读全文