编程求数组各元素的中位数,要求如下:
编程求数组各元素的中位数,要求如下:
(1)void array_input(double a[], int n)的功能是:输入double型数组a的各元素值,参数n是数组元素的个数;
(2)void bubble_sort(double a[], int n)函数实现从小到大冒泡排序功能,参数n是数组元素的个数;
(3)double median(double a[], int n)的功能是:求出有序数组array各元素的中位数,参数n是数组元素的个数;
(说明:中位数就是在已排序的各元素中,处于中间位置的元素值:当数组元素个数为奇数时,处于中间位置的元素只有一个,中位数就是该元素的值;当数组元素个数为偶数时,处于中间位置的元素只有两个,中位数就是这两个元素的简单算术平均数)
(4)void array_print(double a[],int n)功能是打印输出数组
(5)主函数的功能:定义一个是长度为8的double型数组,通过调用array_input()输入各元素的值,再调用select_sort()对数组各元素排序,之后调用median()得到中位数,最后输出结果;
(6)主函数在前,上述三个函数在后面定义。程序运行如下图所示:
1回答
-
望远
#include <stdio.h>
void main()
{
//函数声明
void array_input(double a[], int n);
void bubble_sort(double a[], int n);
double median(double a[], int n);
void array_print(double a[],int n);
double arr[10],m;
int n=8;
array_input(arr,n);
bubble_sort(arr,n);
m=median(arr,n);
printf("中位数为%.3lf\n",m);
array_print(arr,n);
}
/**
输入double型数组a的各元素值,参数n是数组元素的个数
**/
void array_input(double a[], int n)
{
printf("请输入数据%d个数据(以空格分隔):\n",n);
for(int i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
}
/**
函数实现从小到大冒泡排序功能,参数n是数组元素的个数
**/
void bubble_sort(double a[], int n)
{
int i,j;
double temp;
for(i=0;i<n-1;i++)
{
for(j=i;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
/**
求出有序数组array各元素的中位数,参数n是数组元素的个数
**/
double median(double a[], int n)
{
double result=0;
if(n%2==0)
{
result=(a[n/2]+a[n/2-1])/2;
}else{
result=a[n/2];
}
return result;
}
/**
打印输出数组
**/
void array_print(double a[],int n)
{
printf("数组从小到大打印输出为:\n");
for(int i=0;i<n;i++)
{
printf("%.3lf ",a[i]);
}
printf("\n");
}