移动数组中的元素,将低于平均值的元素放在平均值的后面,删除小于平均值的元素,删除重复元素,查找元素,

该程序分别实现了输入数组计算平均值,将低于平均值的元素放到数组末尾,删除小于平均值的元素,删除数组中的重复元素,以及查找指定元素在数组中的位置。通过多个for循环遍历数组,进行条件判断和元素移动,以实现所需功能。
摘要由CSDN通过智能技术生成

#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main ()
{
    const int N=20;
    double a[N],t;
    int i,j,k,n,sum=0;
    cout<<"请输入数组长度"<<endl;
    cin>>n;
    cout<<"请输入数组元素"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
            sum=sum+a[i];
    }
    a[n]=sum/n;
    for(i=0;i<=n;i++)
    {
        cout<<setw(3)<<a[i];
        if((i+1)%5==0)
            cout<<endl;
    }
    cout<<"调整后的数据为:"<<endl;
    i=0,k=n-1;
    
while(i<=k)
    {
        if(a[i]<a[n])
        {
            t=a[i];
            for(j=i;j<n-1;j++)
            a[j]=a[j+1];
            a[n-1]=t;
          
 k--;//原来最后一个元素的下标

        }
        else
            i++;
    }

    for(i=0;i<=n;i++)
    {
        cout<<setw(3)<<a[i];
        if((i+1)%5==0)
            cout<<endl;
    }


    return 0;
}

#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main ()
{
    const int N=20;
    double a[N],t,aver;
    int i,j,k,n,sum=0;
    cout<<"请输入数组长度"<<endl;
    cin>>n;
    cout<<"请输入数组元素"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
            sum=sum+a[i];
    }
    aver=sum/n;
    a[n]=sum/n;
    for(i=0;i<=n;i++)
    {
        cout<<setw(3)<<a[i];
        if((i+1)%5==0)
            cout<<endl;
    }
    cout<<"删除小于平均值的元素的数据为:"<<endl;
    for(i=0;i<n;i++)
    {
        if(a[i]<aver)
        {
            for(j=i;j<n-1;j++)
                a[j]=a[j+1];
           
 n--;//删除后数组实际长度变化
            i--;//元素前移导致后面元素下标变小

        }
    }

    for(i=0;i<n;i++)
    {
        cout<<a[i]<<setw(3);
        if((i+1)%5==0)
            cout<<endl;
    }
    


    return 0;
}

//删除重复元素

#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main ()
{
    const int N=20;
    int a[N];
    int i,j,n,pos;
    cout<<"请输入数组长度"<<endl;
    cin>>n;
    cout<<"请输入数组元素"<<endl;
    for(i=0;i<n;i++)
        cin>>a[i];
    cout<<"删除重复元素后为:"<<endl;
    pos=1;//默认数组的第一个元素在结果集中,开始时结果集数组长度为1
    for(i=1;i<n;i++)//第一个元素默认是结果集的,因此从第二个元素开始和结果中所有元素比较
    {
        for(j=0;j<pos;j++)
        if(a[i]==a[j])
                break;//推出for循环之后判断j和pos的大小关系,若j==pos说明a[i]和结果集中的元素不等
        if(j==pos)//则把a[i]写进结果集,下标pos移动
            a[pos++]=a[i];
    }

    cout<<"输出结果集的元素"<<endl;
    for(i=0;i<pos;i++)

    {
        cout<<a[i]<<setw(3);
    if((i+1)%5==0)
        cout<<endl;
    }

    return 0;
}

使用两个数组删除重复元

#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main ()
{
    const int N=20;
    int a[N],b[N];;
    int i,j,n,pos,t;
    cout<<"请输入数组长度"<<endl;
    cin>>n;
    cout<<"请输入数组元素"<<endl;
    for(i=0;i<n;i++)
        cin>>a[i];
    b[0]=a[0];//将第一个元素写入结果集数组b中
    t=1;//记录数组b的长度
    
for(i=1;i<n;i++)
    {
        for(j=0;j<t;j++)
        {
            if(a[i]==b[j])
                break;
        }
      
 if(j>=t)
            b[t++]=a[i]
;//数组b的长度加1
        
    }

    cout<<"删除重复元素后的数组为:"<<endl;
    for(i=0;i<t;i++)
    {
        cout<<b[i]<<setw(3);
        if((i+1)%5==0)
            cout<<endl;
    }

    


    return 0;
}

查找元素

#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main ()
{
    const int N=20;
    int a[N],b[N];;
    int i,j,n,x,mid,top,bot;
    cout<<"请输入数组长度"<<endl;
    cin>>n;
    cout<<"请输入数组元素"<<endl;
    for(i=0;i<n;i++)
        cin>>a[i];
    cout<<"请输入要查找的元素"<<endl;
    cin>>x;
    top=0,bot=n-1;
  
 while(top<=bot)
    {
        mid=(top+bot)/2;
            if(x==a[mid])
        break;
    else
        if(x>a[mid])//如果是从大到小排序,只需把top=mid+1和bot=mid-1位置调换
            top=mid+1;
        else
            bot=mid-1;
    }

    if(top<=bot)
        cout<<"x的位置在"<<mid+1<<endl;
    else
        cout<<"没有这个数"<<endl;

    
    

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keep moving944

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值