一个用于去掉数组最大值、最小后求平均值的函数,并举了个可执行的小例子。程序数据测试中用到,如此写来,记录于此以备份。
C++代码
- #include<stdlib.h>
- #include<stdio.h>
- /*
- *求数组平均数函数
- 参数:
- arr – 数组
- number – 数组保存的元素数目
- 返回:
- avg – 浮点型平均值。大于等于5个数则去掉最大值和最小值;小于5个数则直接统计
- */
- double avergearray(double* arr, int number){
- int i;
- double max,min,avg,amount=0;
- if(number<=0){
- printf("Error number for the array to avraging!/n");
- return 0;
- }
- if(number<5){ //低于5个数,则直接统计计算
- for(i=0;i<number;i++){
- amount+=arr;
- }
- avg = amount/number;
- return avg;
- }else{
- if(arr[0]<arr[1]){
- min = arr[0];max=arr[1];
- }
- else{
- min=arr[1];max=arr[0];
- }
- for(i=2;i<number;i++){
- if(arr<min){
- amount+=min; //arr<min
- min=arr;
- }else {
- if(arr>max){
- amount+=max; //arr>max
- max=arr;
- }else{
- amount+=arr; //min<=arr<=max
- }
- }//if
- }//for
- avg = amount/(number-2);
- }//if
- return avg;
- }
- int main(int argc, char *argv[])
- {
- int averagevalue=0;
- int n=100;//标记数组大小
- int i;
- double *arrayvalue;
- double avgvalue;
- arrayvalue=(double*)calloc(n,sizeof(double)); //分配统计平均速度的空间
- printf("The array:n");
- //数组赋值
- for (i=1;i<n-1;i++){
- arrayvalue = i+1;
- }
- arrayvalue[0]=0.1;arrayvalue[n-1]=1000;
- //输出数组数据
- for (i=0;i<n;i++){
- printf("%0.2ft",arrayvalue);
- if((i+1)%5==0) printf("n");
- }
- printf("n");
- //输出平均值
- avgvalue = avergearray(arrayvalue,n);
- printf("average value is(Remove maximum and minimum value):%0.2fn",avgvalue);
- getchar();
- }
确实是一个不错的方法! 很拽 学习了···[face_11]
又有新的知识 心得收获了啊