将一个一维整型数组中相同的元素删除到只保留一个,然后按由大到小的顺序输出,用C++编写程序,求大神

将一个一维整型数组中相同的元素删除到只保留一个,然后按由大到小的顺序输出,用C++编写程序,求大神发张源代码的照片,谢谢

#include<iostream>

using namespace std;

void main()

{ int x[256],i,n,j,k,b;
  scanf("%d",&n); if ( n<0 ) n=0; else if ( n>256 ) n=256;
  for ( i=0;i<n;i++ ) scanf("%d",x+i);
  for ( i=0,k=0;i<n;i++ )
  { b=1; for ( j=0;j<k;j++ ) if ( x[i]==x[j] ) { b=0; break; }
    if ( b ) { x[k]=x[i]; k++; }
  }
  for ( i=0;i<k-1;i++ )
    for ( j=i+1;j<k;j++ )
      if ( x[i]<x[j] )
      { b=x[i]; x[i]=x[j]; x[j]=b; }
  for ( i=0;i<k;i++ ) printf("%d ",x[i]); printf("\n");

}

追问

谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-04
#include "stdio.h"
//输入一组整数,以非数字符号结束 
int inputdata(int a[],int i)
{
printf("请输入一组整数,以非数字符号结束:\n");
while(scanf("%d",&a[i++])!=0);

return i;

}
//去除重复,产生新数组 
int only1(int a[],int n)
{
int i,j,k;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
for(k=j;k<n-1;k++)
{
a[k]=a[k+1];
}
a[n-1]='/0';
n--;
}
}
}
printf("\n\n清除重复数后的新数组:\n");
for(i=0;i<n-1;i++)
printf("%d  ",a[i]);
return n-1;
}
//排序 
void sort(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i;j<n;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\n排序后的数组:\n");
for(i=0;i<n;i++)
printf("%d  ",a[i]);
}
int main()
{
int a[100];
sort(a,only1(a,inputdata(a,0)));
}

追问

谢谢

第2个回答  2014-04-04
#include <iostream>
#include <iomanip>
using namespace std;
int N=20;
main()
{
int a[100]={2,3,5,1,4,3,6,1,2,3,2,1,3,5,7};
int i;

for(j=0;j<N;j++) //查找相同的数,置0或者其他符号数字都行
{
for(i=j+1;i<N;i++)
{
if(a[i]==a[j])
a[i]=0;
}
}

for(j=0;j<N;j++) //大小排序
{
for(i=0;i<N-j;i++)
{
if(a[i]<a[i+1])
{
a[i] = a[i] + a[i+1];
a[i+1] = a[i] - a[i+1];
a[i] = a[i] - a[i+1];
}
}
}
for(j=0;j<N;) //遇0输出
{

if(a[j]==0)
break;
cout<<" "<<a[j];
j++;
}

cout<<endl;
return 0;
}

思路明了,希望喜欢。追问

谢谢

相似回答