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运算符,输入来决定数组的大小icon-default.png?t=LA92https://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来释放动态分配的空间