c++将一个一维数组中相同的元素删除的只保留一个,并按大小排列

如题所述

第1个回答  推荐于2016-02-26
#include<iostream.h>
#include<iomanip.h>
void main()
{

int i,j,a[6],b[6],temp,e,q,x,y;

for(i=0;i<6;i++)

{

cout<<"请输入数:";

cin>>a[i];

}

e=0;

for(i=0;i<6-e;i++)

{

for(j=1;j<6-i-e;j++)

{
if(a[i]==a[i+j])

{
temp=a[i+j];

a[i+j]=a[5-e];

a[5-e]=temp;

e++;

}

}

}

for(x=0;x<6-e;x++)

{

b[x]=a[x];

}

for(x=0;x<6-e;x++)

for(y=0;y<5-e-x;y++)

{

if(b[y]<b[y+1])

{

q=b[y];

b[y]=b[y+1];

b[y+1]=q;

}

}

for(x=0;x<6-e;x++)

{

cout<<setw(5)<<b[x];

}

cout<<endl;

}本回答被提问者采纳
第2个回答  2009-04-23
笨办法:从数组头开始遍历。判断从[0]到当前[i],是否有值和[i]的值相等。
如果有,就把当前[i]删除,然后依次把后面的前移。
如果没有,继续判断[i+1]。
第3个回答  2019-09-01
#include<iostream.h>
#include<iomanip.h>
void
main()
{
int
i,j,a[6],b[6],temp,e,q,x,y;
for(i=0;i<6;i++)
{
cout<<"请输入数:";
cin>>a[i];
}
e=0;
for(i=0;i<6-e;i++)
{
for(j=1;j<6-i-e;j++)
{
if(a[i]==a[i+j])
{
temp=a[i+j];
a[i+j]=a[5-e];
a[5-e]=temp;
e++;
}
}
}
for(x=0;x<6-e;x++)
{
b[x]=a[x];
}
for(x=0;x<6-e;x++)
for(y=0;y<5-e-x;y++)
{
if(b[y]<b[y+1])
{
q=b[y];
b[y]=b[y+1];
b[y+1]=q;
}
}
for(x=0;x<6-e;x++)
{
cout<<setw(5)<<b[x];
}
cout<<endl;
}
第4个回答  2009-04-23
我用伪代码吧
定义
shu[n],x=0
赋值
for(i=0;i<n;i++)
scanf("%d",&shu[i]);
运算
排序
for(j=1;j<n;j++)
{
for(i=0;i<n-1;i++)
{

if(shu[j]>=shu[i])
{
temp=shu[i];
shu[i]=shu[j];
shu[j]=temp;
}
}
}
去除相同元素
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{

if(shu[j]=shu[i])
{
x=x-1;
}
}
}

输出
for(i=0;i<n-x;i++)
{
printf("%d",shu[i]);
}
相似回答