双循环遍历,对每个元素向后检索是否有重复值,如有则全部删除。删除方法是将被删除元素后的所有元素向前移动一个位置
#include<stdio.h>
int main()
{
int a[1000];
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
int c = 0;
for(j=i+1;j<n;j++)
{
if(a[i] == a[j])
{
for(k=j;k<n-1;k++)
{
a[k] = a[k+1];
}
j--;
n--;
c++;
}
}
if(c>0)
{
for(k=i;k<n-1;k++)
a[k] = a[k+1];
i--;
n--;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
运行结果及代码如下:
代码:
#include <stdio.h>
int del(int a[],int n)
{
int i=0,j=0,k=0,t;
while(i<n)
{
for (j=0;j<n;j++)
{
if( (j!= i) && (a[j] == a[i]))
break;
}
if(j==n)
{
t = a[k];
a[k] = a[i];
a[i] = t;
k++;
}
i++;
}
return k;
}
int main()
{
int a[100],n,i;// = {1,2,3,3,3,1};
printf("请输入数组元素个数:");
scanf("%d",&n);
printf("请输入数组元素:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d",del(a,n));
return 0;
}