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);
}
结果有误差,如果你找不到错就可能是小数计算引起的的误差问题.

C语言,请编写函数fun(自定义函数),其功能是:将一组得分中,去掉一个最...
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,

C语言中,fun函数的功能是将一组得分中的最高分和最低分去掉,然后求平均...
double fun(double *a,int n){ if(n<3) \/\/如果数组大小小于3,那么直接返回0(去掉最大和最小后没有数据了)return 0;int i;double total,min,max;total=0;\/\/保存成绩的和 min = 1000;\/\/保存最小成绩 max = 0; \/\/保存最大成绩 for(i=0; i<n; i++){ if(min > a[i]...

语言中,fun函数的功能是将一组得分中的最高分和最低分去掉,然后求平均...
我认为效率比较高的是先排序,再去掉数组中第一个和最后一个,中间的就好办了,排序的方法相当多。这里就不写出来了 ,自己找印象才深刻。

请编写函数fun(),其功能是
int main(){ void fun(double*x,double*y,double*sum,double*sub);double a,b,sum,sub;printf("请输入两个浮点数:");scanf("%lf %lf",&a,&b);fun(&a,&b,&sum,&sub);printf("两数之和为:%1.2lf\\n",sum);printf("两数之差为:%1.2lf\\n",sub);return 0;} void fun(d...

⑵ 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和...
void fun(int a[], int n, int *max, int *d ){ int i;for(i=0,*max=0,*d=0;i<n;i++){ if( a[i] > *max ) *max=a[i],*d=i;} }

C语言中,编写函数fun,功能是:在一个英文长句中,在每个单词间除去原来...
char *fun(char *s){ int i = 0;while(s[i] != '\\0'){ if(s[i]==' ')s[i] = '*';i++;} return s;}

C语言 去掉一个最高分和一个最低分
define M 50 \/\/本程序对歌手的打分均限定在整数范围 \/\/若需处理成小数形式,只要将数据类型设定为float即可 void main(){ static char name[M+1][]={ "";"singer1 name";..."singer50 name"}; \/\/50位歌手名字 static int scores[M+1]; \/\/50位歌手得分 int i,j;for (i=1;i<M+1...

编写函数fn.功能是将一组得分 去一个最高分一个最低分后求平均值 并...
double fn( int arr[], int n ) { int sum = 0, i, max = arr[ 0 ], min = arr[ 0 ]; for( i=0; i<n; i++ ) { sum += arr[ i ]; if( arr[ i ] > max ) max = arr[ i ]; if( arr[ i ] < min ) min = arr[ i ]; } return ( ( sum - max - ...

编写函数fn.功能是将一组得分 去一个最高分一个最低分后求平均值 并...
python版:def fn(scores):fmax = max(scores)fmin = min(scores)total = sum(scores)avg = total \/ (len(scores)-2)return avg

c语言 请编写函数fun
include <string.h> void fun(int *a,int *n){ int i,j=0;for(i=2;i<100;i++)if((i%7==0||i%11==0)&&i%77!=0)\/\/应该改为&&,&是二进制的与操作 a[j++]=i;n=j;} void main(){ int a[50];int n;fun(a,&n);for (int i=0;i!=n;++i){ if (i%5==0&&i...

相似回答