求数组中的中位数,大家看看代码哪里出错了
题目:编程求数组各元素的中位数,要求如下:(1)void array_input(double array[], int n)的功能是:输入double型数组array的各元素值,参数n是数组元素的个数;
(2)void select_sort(double array[], int n)函数实现从小到大选择排序功能,参数n是数组元素的个数;
(3)double median(double array[], int n)的功能是:求出有序数组array各元素的中位数,参数n是数组元素的个数;
(说明:中位数就是在已排序的各元素中,处于中间位置的元素值:当数组元素个数为奇数时,处于中间位置的元素只有一个,中位数就是该元素的值;当数组元素个数为偶数时,处于中间位置的元素只有两个,中位数就是这两个元素的简单算术平均数)
(4)主函数的功能:定义一个是长度为8的double型数组,通过调用array_input()输入各元素的值,再调用select_sort()对数组各元素排序,之后调用median()得到中位数,最后输出结果;
代码:
#include<stdio.h>
int main()
{
void array_input(double array[], int n);
void select_sort(double array[], int n);
double median(double array[], int n);
double d[8],a;
int n=8;
array_input(d,8);
select_sort(d,8);
a=median(d,8);
printf("数组d各元素的中位数:%f",a);
return 0;
}
void array_input(double array[], int n)
{
int i;
printf("请输入double型数组的个元素:");
for(i=0;i<n;i++)
{
scanf("%f",&array[i]);
}
}
void select_sort(double array[], int n)
{
double t;
int i;
for(i=0;i<n;i++)
{
if(array[i]>array[i+1])
t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
}
double median(double array[], int n)
{
double x,y;
int i;
if(n%2==0)
{
x=array[i/2]+array[i/2+1];
y=x/2;
}
else
y=array[(i+1)/2];
return(y);
}
大家帮帮忙啊,看看哪里出错了。。。