设计函数float fun(float a【】,int n, float &max,float*min),查找数组a中的最大值元素max和最小值元素min,同时计算去除最大值和最小值后a中元素的平均值,并在主函数中测试该函数。
float fun(float a[], int n, float &max, float *min)
{
max = a[0];
*min = a[0];
int nMinPos = 0;
int nMaxPos = 0;
int i,nNumCount = 0;
float fSum = 0;
for (i = 1; i < n; i++)
{
if (max < a[i])
{
max = a[i];
nMaxPos = i;
}
if (*min > a[i])
{
*min = a[i];
nMinPos = i;
}
}
for (i = 0; i < n; i++)
{
if ((i != nMinPos) && (i != nMaxPos))
{
fSum += a[i];
nNumCount++;
}
}
return fSum / nNumCount;
}
int main()
{
float a[5];
for (int i = 0; i < 5; i++)
scanf_s("%f", &a[i]);
float max, min;
float fV = fun(a, 5, max, &min);
printf("平均值:%f", &fV);
return 0;
}
循环数组获取最大值和最小值。同时给计算数组中值的总和count。循环结束avg = (count-max-min) / a.length - 2
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
float fun(float a[],int n, float &max,float*min)
{
max = a[0];
float mm = a[0];
float sum = 0.0;
for (int i = 1; i < n; i++)
{
if(a[i] > max)
max = a[i];
if(a[i] < mm)
mm = a[i];
sum += a[i];
}
*min = mm;
float av = (sum - max - mm)/(n-2);
return av;
}
int main()
{
float buf[] = {2.1,3.3,4.4,1.1,20.2};
float max = 0.0;
float min = 0.0;
float av = fun(buf,5,max,&min);
printf("max=%.2f,min=%.2f,av=%.2f\n",max,min,av);
getchar();
getchar();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y