问题描述
- 关于去除数组中重复元素的问题
-
源代码:#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]);
初始化指着
解决方案五:
养成一个好习惯,数据使用之前初始化一下,看看我的代码和你的区别。
时间: 2024-12-31 18:42:58