#include <stdio.h> int main() { int n,i,j=0,k; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[i]==a[j]) { for(k=j;k<n-1;k++) { a[k]=a[k+1]; } n--; j--; } } } for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }
第21 22行的n--,j--较难理解,n--是去重一个就让数组长度减一,方便一会打印;j--则是和j下次循环时j++作用相互抵消,再判断一次新的a[j](即原先的a[j+1],向前移了一位)和a[i]是否相等