2014-09-10 112 views
-3

只是试图寻找数字数组的中位数和我有以下几点:C中的简单中值函数?

double median(int* array, int length) 
{   
     double median; 
     qsort(array, length, sizeof(int), cmpfunc); 
     if((length%2) == 0) 
     {  
       median = (array[(length/2)] + array[(length/2)-1)])/2; 
     } 
     else 
     { 
       median =(array[(length -1)/2]); 

     } 
     return median; 

} 
int main() 
{ 
int array [] = {5, 3, 2, 7, 9}; 
printf("%d\n", median (array, sizeof(array)/sizeof(array[0]))); 
return 0; 
} 

我的平均回报为一个疯狂的数量巨大。有人知道为什么

+5

在printf()中使用%f而不是%d,并查看给出的内容。 – AGreenman 2014-09-10 20:12:36

+2

你知道中位数是多少? ATM,在“长度%2 == 0”中得到了错误的答案,而在另一种情况下,做了一个多余的“-1”。 – Deduplicator 2014-09-10 20:13:03

+0

@JohnHascall为什么'lf'会更合适? – ouah 2014-09-10 20:16:42

回答

1

若要printf double使用%f而不是%dformat specifier

+0

谢谢!,比我想象的要简单得多。 – user2891051 2014-09-10 20:29:43