第1个回答 2016-11-28
#include <stdio.h>
int delDuplicateElement(int a[],int count){
for (int i = 0; i < count-1; i++) {
for (int j = i+1; j < count ; j++) {
if (a[i] == a[j]) {
for (int k = j; k < count-1; k++) {
a[k] = a[k+1]; //如果该数重复,对该数进行覆盖(删除)并count--;
}
count--;
}
}
}
return count;
}
int main(int argc, const char * argv[]) {
int a[] = {3,2,32,3,23,2,1,21,33,2,3,432,3,32,2};
int count = sizeof(a)/sizeof(int);
printf("原数组:");
for (int i = 0; i < count; i++) {
printf("%d ",a[i]);
}
printf("\n");
count = delDuplicateElement(a,count);
printf("删除重复元素后:");
for (int i = 0; i < count; i++) {
printf("%d ",a[i]);
}
printf("\n");
}
第2个回答 2016-11-28
我可以帮你实现这个程序。实现代码如下:
#include <stdio.h>
#define N 8 //定义一个符号常量
int remove_repeat(int *a, int len)
{
int i, j, k;
for(i = 0; i < len; i ++)
{
for(j = i+1; j <len;)//对后面每个元素比较,去重。
{
if(a[j] == a[i])//发现重复元素。
{
for(k = j+1; k<len; k++)//依次前移一位
a[k-1] = a[k];
len--;//总长度减一
j=i+1;
}
else
j++;
}
}
return len;//返回新的长度值。
}
int main()
{
int a[N];
int i,len;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
len=remove_repeat(a,N);
printf("After remove repeat...\n");
for(i=0;i<len;i++)
printf("%-4d",a[i]);
return 0;
}
示例运行结果:
1 2 2 3 5 5 5 8
After remove repeat...
1 2 3 5 8
2 2 2 3 3 3 3 4
After remove repeat...
2 3 4
本回答被提问者和网友采纳