#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;
}