c++设计函数查找数组中的最大和最小元素,并计算去除最大和最小后元素的平均值
第一串代码为精简版
#include<iostream>
using namespace std;
#define N 10//用宏定义来控制数组的大小
void input(float *p,int n) //给数组num赋值
{
for(int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个元素:";
cin>>*p;
p++;
}
}
void output(float *p,int n) //输出数组num的值
{
for(int i=0;i<n;i++)
{
cout<<p[i]<<'\t';
if((i+1)%5==0)cout<<'\n'; //每输出5个换行
}
}
float fun(float a[],int n,float &max,float *min)
{
int i,j;float s=0,aver;
for(i=0;i<n;i++) //查找数组中的重大和最小值,并累加
{
if(max<a[i])max=a[i];
if(*min>a[i])*min=a[i];
s+=a[i];
}
aver=(s-max-*min)/(n-2); //计算去除最大值和最小值后数组的平均值
return aver;
}
int main()
{
cout<<"输入一个10个数的数组\n,每输入一个数按回车确定";
float num[10],*p=num; //指针p指向数组num的首地址
input(num,N);
cout<<"输入的数组为:\n";
output(num,N);
float max=p[0],min=p[0];
float aver=fun(p,5,max,&min);
cout<<"数组中的最大值为:"<<max<<"最小值为:"<<min<<"\n去除最大和最小后数组中元素的平均值:"<<aver<<endl;
return 0;
}
接下的代码,运用了new运算符,可以自己决定所输入的数组大小。
参考:运用new运算符,输入来决定数组的大小https://blog.csdn.net/Patrickzc/article/details/121723998?spm=1001.2014.3001.5501
#include<iostream>
using namespace std;
void input(float *p,int n) //给p指向的数组赋值
{
for(int j=0;j<n;j++)
{
cin>>p[j];
}
}
float fun(float a[],int n,float &max,float *min)
{
int i,j;float s=0,aver;
for(i=0;i<n;i++) //查找数组中的重大和最小值,并累加
{
if(max<a[i])max=a[i];
if(*min>a[i])*min=a[i];
s+=a[i];
}
aver=(s-max-*min)/(n-2); //计算去除最大值和最小值后数组的平均值
return aver;
}
int main()
{
int n;
cout<<"请先规定数组的大小,\n";
cin>>n;
cout<<"并输入"<<n<<"个数,组成一组数组\n";
float *p;
p=new float[n]; //动态申请了n个元素的float数组空间,首地址赋给p
input(p,n); //调用input函数
float max=p[0],min=p[0];
float aver=fun(p,5,max,&min);
cout<<"数组中的最大值为:"<<max<<"最小值为:"<<min<<"\n去除最大和最小后数组中元素的平均值:"<<aver<<endl;
delete []p; //释放p所指向数组分配的动态空间
return 0;
}
使用new运算符,记得delete来释放动态分配的空间