c++数组题。。。。。

设计函数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