C语言,请编写函数fun(自定义函数),其功能是:将一组得分中,去掉一个最高分和一个最低分,

然后求平均值,并通过函数返回。
函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。
例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分,则输出结果为:8.687500。

#include"stdio.h"
#define  N 10
int findmax(float*a,int n)
{
int temp = 0;
for (int i=1;i<n;i++)
{
if (a[temp]<a[i])
{
temp =i;
}
}
return temp;
}
int findmin(float*a,int n)
{
int temp = 0;
for (int i=1;i<n;i++)
{
if (a[temp]>a[i])
{
temp =i;
}
}
return temp;
}
void fun()   //去掉最高分和最低分的函数
{
int i,k,f;
float a[N],sum = 0,avg = 0 ;
printf("请输入10个分数\n");
for(i=0;i<N;i++)
{
scanf("%f",&a[i]);
}
k = findmax(a,N);
f = findmin(a,N);
printf("去除最大值%f\n",a[k]);
printf("去除最小值%f\n",a[f]);
for(i=0;i<N;i++)
{
sum+=a[i];
}
sum-=(a[k]+a[f]);
avg = sum/(N-2);
printf("平均得分:%f\n",avg);
};
int main()
{
fun(); //调用的函数
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-15
请参考:
#include"stdio.h"
#define N 10
int findmax(float*a,int n)
{
int temp = 0;
for (int i=1;i<n;i++)
{
if (a[temp]<a[i])
{
temp =i;
}
}
return temp;
}
int findmin(float*a,int n)
{
int temp = 0;
for (int i=1;i<n;i++)
{
if (a[temp]>a[i])
{
temp =i;
}
}
return temp;
}
void fun()
{
int k,f;
float a[N],sum = 0,avg = 0 ;
printf("请输入10个分数\n");
for (int i=0;i<N;i++)
{
scanf("%f",&a[i]);
}
k = findmax(a,N);
f = findmin(a,N);
printf("去除最大值%f\n",a[k]);
printf("去除最小值%f\n",a[f]);
for (int i=0;i<N;i++)
{
sum+=a[i];
}
sum-=(a[k]+a[f]);
avg = sum/(N-2);
printf("结果等于:%f\n",avg);
};
int main()
{
fun(); //你要调用的函数
return 0;
}本回答被提问者采纳
第2个回答  2014-10-15
#include <stdio.h>
float fun(float [],int);

int main(void)
{
float num[100]={0.0},aver=0.0;
int n=0,count=0;
printf("多少个得分:\n");
scanf("%d",&n);
for(count=0;count<n;count++)
scanf("%f",&num[count]);
aver=fun(num,n);
printf("平均值:%f\n",aver);
return 0;
}

float fun(float *a,int n)
{
int count=0;
float max=a[0],min=a[0],sum=0.0;
for(count=1;count<n;count++)
{
if(a[count]>max) max=a[count];
if(a[count]<max) min=a[count];
sum+=a[count];
}
sum-=max+min;
return sum/(n-2);
}
结果有误差,如果你找不到错就可能是小数计算引起的的误差问题.