C语言二维数组中删除数组中的重复元素
从键盘输入一个inta[5][10]得二维数组,输出数组中不重复的元素的个数,并且输出最后清楚重复后的数组统计数组中不重复元素的个数...
从键盘输入一个int a[5][10]得二维数组,输出数组中不重复的元素的个数,并且输出最后清楚重复后的数组
统计数组中不重复元素的个数 展开
统计数组中不重复元素的个数 展开
展开全部
简单地统计重复元素和不重复元素,可以用1维数组。
#include<stdio.h>
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 data\n");
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<n;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 -- %d\n",b[i],c[i]);
}
}
--------------------
“删除数组中的重复元素” 不知道 是什么意思。
数组单元是连续分配单元的。即使是动态分配的单元,也不好从当中删去。
动态分配的单元,可以用 realloc 增加分配单元 和 减少分配单元。但只能从尾部做起,单元连续。
#include<stdio.h>
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 data\n");
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<n;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 -- %d\n",b[i],c[i]);
}
}
--------------------
“删除数组中的重复元素” 不知道 是什么意思。
数组单元是连续分配单元的。即使是动态分配的单元,也不好从当中删去。
动态分配的单元,可以用 realloc 增加分配单元 和 减少分配单元。但只能从尾部做起,单元连续。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询