关于去除数组中重复元素的问题

源代码:#include
#include
int main()
{
int *a;
int n,i,j;
scanf("%d",n);
a=(int *)malloc(n*sizeof(int));
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
for (j=1;j<n;j++)
if (a[i]==a[j])
printf ("%d",&a[i]);
else
printf ("%d %d",&a[i],&a[j]);
free(a);
return 0;
}

编译没错,但是运行时出错,求大神帮忙看看问题出在哪里?

&,scanf, 关键字。

程序本身就有问题,你那两个For循环明显是错了。

int Unique(int array[],int arrayLength){

int k=0;

int i=1;

while(i<arrayLength){

if(array[k]==array[i])

i++;

else{

k++;

array[k]=array[i++];

}

}

return k+1;//返回的是目标数组长度

}

int main(){

int array[]={1,2,2,3,4,4,6,6,6,9};

int n=Unique(array,10);

for(int i=0;i<n;i++)

cout<<array[i]<<" ";

return 0;

}

int *a = NULL;
int n = 0,i = 0,j = 0;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
for (i=0;i<n;i++)
    scanf("%d",&a[i]);
for (i=0;i<n;i++)
    for (j=i+1;j<n;j++)
        if (a[i]==a[j])
            printf ("%d",a[i]);

// else
// printf ("%d %d",a[i],a[j]);

初始化指着

养成一个好习惯,数据使用之前初始化一下,看看我的代码和你的区别。