完全参照你的思路改的。
只用一个数组,找相同,删其中一个,数组需要移位。
#include <stdio.h>#define N 10
int main()
{
int a[N]
for(int i=0i<Ni++)
scanf("%d",&a[i])
printf("源:\n")
for(int i=0i<Ni++)
printf("%d ",a[i])
//------------------修改部分,其他与你源码一致-------------------------------
int find,i,j,k,n=N
while(1)//循环检查,直到没有相同数值元素
{
find=0
for(i=0i<ni++)
{
for(j=i+1j<nj++)
{
if(a[i]==a[j])//找到两个相同的,删除后一个a[j],数组移位,最大长度n值改变,并跳回最外层循环,开始新一轮检测
{
for(k=jk<n-1k++)//删除并移位
a[k]=a[k+1]
n--//长度减一
find=1
break
}
}
if(find==1)
break
}
if(find==0)
break
}
printf("\n处理后:\n")
for(i=0i<ni++)
printf("%d ",a[i])
//-------------------------------------------------------------------------------
return 0
}