去最大最小值后求平均值方法的函数(c语言)

 一个用于去掉数组最大值、最小后求平均值的函数,并举了个可执行的小例子。程序数据测试中用到,如此写来,记录于此以备份。

C++代码
  1. #include<stdlib.h>   
  2. #include<stdio.h>   
  3. /*  
  4. *求数组平均数函数  
  5. 参数:  
  6. arr – 数组  
  7. number – 数组保存的元素数目  
  8. 返回:  
  9. avg – 浮点型平均值。大于等于5个数则去掉最大值和最小值;小于5个数则直接统计 
  10. */  
  11. double avergearray(double* arr, int number){   
  12.     int i;   
  13.     double max,min,avg,amount=0;   
  14.     if(number<=0){   
  15.         printf("Error number for the array to avraging!/n");   
  16.         return 0;   
  17.     }   
  18.     if(number<5){   //低于5个数,则直接统计计算 
  19.         for(i=0;i<number;i++){   
  20.             amount+=arr;   
  21.         }   
  22.         avg = amount/number;   
  23.         return avg;   
  24.     }else{   
  25.         if(arr[0]<arr[1]){   
  26.             min = arr[0];max=arr[1];   
  27.         }   
  28.         else{   
  29.             min=arr[1];max=arr[0];   
  30.         }   
  31.         for(i=2;i<number;i++){   
  32.             if(arr<min){   
  33.                 amount+=min;        //arr<min   
  34.                 min=arr;   
  35.             }else {   
  36.                 if(arr>max){   
  37.                     amount+=max;    //arr>max   
  38.                     max=arr;   
  39.                 }else{   
  40.                     amount+=arr//min<=arr<=max   
  41.                 }   
  42.             }//if   
  43.         }//for   
  44.         avg = amount/(number-2);   
  45.     }//if   
  46.     return avg;   
  47. }   
  48. int main(int argc, char *argv[])   
  49. {   
  50.     int averagevalue=0;   
  51.     int n=100;//标记数组大小
  52.     int i; 
  53.     double  *arrayvalue; 
  54.     double avgvalue; 
  55.     arrayvalue=(double*)calloc(n,sizeof(double));       //分配统计平均速度的空间 
  56.     printf("The array:n"); 
  57.     //数组赋值 
  58.     for (i=1;i<n-1;i++){ 
  59.         arrayvalue = i+1;   
  60.     }   
  61.     arrayvalue[0]=0.1;arrayvalue[n-1]=1000;   
  62.     //输出数组数据   
  63.     for (i=0;i<n;i++){   
  64.         printf("%0.2ft",arrayvalue);   
  65.         if((i+1)%5==0) printf("n");   
  66.     }   
  67.     printf("n");   
  68.     //输出平均值 
  69.     avgvalue = avergearray(arrayvalue,n);   
  70.     printf("average value is(Remove maximum and minimum value):%0.2fn",avgvalue);   
  71.     getchar();   
  72. }  
点赞 (5)
  1. 电动葫芦说道:

    确实是一个不错的方法! 很拽 学习了···[face_11]

  2. 七七说道:

    又有新的知识 心得收获了啊

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code