数组中为何不能去掉重复的数?
# define N 10
# include<stdio.h>
void main()
{
void sort(int array[],int n);
int *quchong(int a[],int n,int *count);
int i,j,a[N],c=0,*q;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
sort(a,N);
printf("the sorted array: \n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
q=quchong(a,N,&c);
printf("去重复数字后: \n");
for(j=0;j<c;j++)
printf("%5d",q[j]);
}
void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])
k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}
int *quchong(int a[],int n,int *count)//去重复数函数
{
int t,s,i,b[N],*p;
t=1;
s=0;
for(i=0;i<n-1;i++)
{
if(a[i]==a[i+1])
{
if(t>=2)
continue;
b[s++]=a[i+1];
t++;
++(*count);
}
else
{
if(a[i]!=a[i+1])
t=1;
b[s++]=a[i+1];
++(*count);
}
}
p=b;
return p;
}
[解决办法]
int *quchong(int a[],int n,int *count)//去重复数函数
应该使用引用,传值应该有问题,改为
int *quchong(int& a[],int n,int *count)//
[解决办法]
b[]数组要开在外面,不能在函数里面,函数执行完内存就释放了
[解决办法]
大概看了一下,以下几个问题
1、b是在子函数里的数组,子函数结束后,b里面的内容应该就是不确定的了。
2、排序算法有问题,for(j=i+1;j<n;j++) 那后面应该加花括号把后面的3条语句给括起来吧。
3、quchong函数里面,else里的b[s++]=a[i+1]; 应该是b[s++]=a[i];吧
[解决办法]
int *quchong(int a[],int n,int *count)//
int t,s,i,b[N],*p;
b[N]为函数quchong内临时数组,函数返回时,临时数组无效。
[解决办法]
# define N 4# include<stdio.h>int b[N];void main(){ void sort(int array[],int n); int *quchong(int a[],int n,int *count); int i,j,a[N],c=0,*q; for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); sort(a,N); printf("the sorted array: \n"); for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); q=quchong(a,N,&c); printf("去重复数字后: \n"); printf("%d\n", c); for(j=0;j<c;j++) printf("%5d",q[j]);}void sort(int array[],int n){ int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k];array[k]=array[i];array[i]=t; }}int *quchong(int a[],int n,int *count)//去重复数函数{ int t,s,i,*p; t=1; s=0; b[s++] = a[0]; for(i = 1; i < n; ++i) { if(a[i-1] != a[i]) { b[s++] = a[i]; } } *count = s; p=b; return p;}
[解决办法]
1,代码最好整理一下。
2,问题最好清晰一下。
[解决办法]
建议楼主写代码时注意一下排版...
------解决方案--------------------
建议楼主写代码时注意一下排版...