方法一:先对数组中的元素进行排序(这里为递增排序),再对重复的元素进行判断删除。代码如下:
#include<stdio.h>
void delete(int *a)
{
int i;
int j = 1;
int len = sizeof(a)/sizeof(a[0]);
for(i = 1; i < len; i++)
{
if(a[j - 1] == a[i])
{
a[j++] = a[i];
}
}
for(i = 0; i < j; i++)
{
printf("%d",a[i]);
}
}
void sort(int *a)
{
int i;
int j;
int temp;
int len = sizeof(a)/sizeof(a[0]);
for(i = 0; i < len - 1; i++)
{
for(j = i; j < len; j++)
{
if(a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main()
{
int s[10] = {1,3,3,5,4,6,7,8,7,3};
sort(s);
delete(s);
return 0;
}
方法二:直接在所给数组中删除,在每次出现重复字符时将后面的所有字符一次前移一位。
#include <stdio.h>
void delete(int *a)
{
int i;
int j;
int k;
int len = sizeof(a)/sizeof(a[0]);
for(i = 0; i < len; i++)
{
for(j = i + 1; j < len; j++)
{
if(a[i] == a[j])
{
for(k = j; k < len - 1; k++)
{
a[k] = a[k + 1];
}
len--; //删除成功元素的数目减一
j--; //每次删除后j下标仍为被删除的元素的下标,避免连续重复的元素被遗漏
}
}
}
for(i = 0; i < len; i++)
{
printf("%d",a[i]);
}
}
int main()
{ int s[10] = {1,3,3,5,4,6,7,8,7,3};
delete(s);
return 0;
}