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

2024-12-02 08:33:55
推荐回答(4个)
回答1:

#include
#include
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]
{

q=b[y];

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

b[y+1]=q;

}

}

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

{

cout<
}

cout<
}

回答2:

笨办法:从数组头开始遍历。判断从[0]到当前[i],是否有值和[i]的值相等。
如果有,就把当前[i]删除,然后依次把后面的前移。
如果没有,继续判断[i+1]。

回答3:

#include
#include
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]{
q=b[y];
b[y]=b[y+1];
b[y+1]=q;
}
}
for(x=0;x<6-e;x++)
{
cout<}
cout<}

回答4:

我用伪代码吧
定义
shu[n],x=0
赋值
for(i=0;i scanf("%d",&shu[i]);
运算
排序
for(j=1;j{
for(i=0;i {

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

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

输出
for(i=0;i{
printf("%d",shu[i]);
}