/*我写了两种方法!!!方法一*/ #include int main() { int a[10]={1,3,3,2,5,1,1,5,6,6}; int i,j,k,x=10;/*x为数组中无重复有效元素的个数*/ for(i=0;i { for(j=i 1;j { if(a[i]==a[j]) { x--;//发现重复时减1 for(k=j;k { a[k]=a[k 1]; } j--; } } } for(i=0;i printf("n"); return 0; } /****************************************************************************** * 再写一种方法!!! *此方法是把所有重复的都标识出来,然后生成一个新的无重复元素的数组 *******************************************************************************/ #include #define flag -1//此外定义了一个标识。把重复的无素赋值为此标识。 int main() { int a[10]={1,3,3,2,5,1,1,5,6,6}; int b[10];//用于存储有无重复元素的数组。 int i,j,x=10;//x为无重复有效元素个数 for(i=0;i<10;i ) { if(a[i]!=flag)//如果标识过了,就不比较了 { for(j=i 1;j<10;j ) { if(a[i]==a[j]&&a[j]!=flag) { a[j]=flag; x--;//标识一个重复项,有效无素减少一个 } } } }; for(i=0,j=0;i<10;i )//把非标识的元素,给数组b[]; { if(a[i]!=flag) { b[j]=a[i]; j ; } }; for(i=0;i printf("n"); return 0; } 删除数组中的重复元素 给定一个已定义的数组,该数组中包含有重复的元素!例如给定的数组为:int a[]={1,2,3,4,5,3,2,1,5};而目的是将该数组处理后留下的结果为:a[]={1,2,3,4,5}; 而不需要再定义int b[50],通过"b[j]=a[i];"把a数组的元素转移到b数组中去!
代码如下 | 复制代码 | #include int main() { char str[100]; int i=0,j; printf("input a string n"); gets(str); while(i { j=i 1; printf("delelte result %dn",strlen(str)); while(j { if(str[j]==str[i]) { str[j]=' '; strcat(str,str j 1) ; } else j ; } i ; } puts(str); } 二维数组中删除数组中的重复元素
代码如下 | 复制代码 | 简单地统计重复元素和不重复元素,可以用1维数组。 #include void main() { int i,j,k; int a[50]; int b[50],c[50]; int n,flag=0; for (i=1;i<50;i ) c[i]=0; printf("Please enter 50 datan"); for (i=0;i<50;i ) scanf("%d",&a[i]); n=0; b[n]=a[0]; c[n]=1; n ; for (i=1;i<50;i ){ for (k=0;k if (a[i] == b[k]) {c[k]=c[k] 1; flag=1;break;} } if (flag == 0) {b[n] =a[i];c[n]=1;n ;} else {flag = 0;}; } for (i=0;i<50;i ){ if (c[i]==1) printf("%d ",b[i]); } printf("n=============n"); for (i=0;i<50;i ){ if (c[i]>1) printf("%d -- %dn",b[i],c[i]); } } -------------------- “删除数组中的重复元素” 不知道 是什么意思。 数组单元是连续分配单元的。即使是动态分配的单元,也不好从当中删去。 |
|
|