#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int arr[1000];
int i;
for(i = 0;i < n;i++){
scanf("%d",&arr[i]);
}
// 打印去重前的数组
for(i = 0;i < n;i++){
printf("%d ",arr[i]);
}
printf("\n");
int j,k;
for(i = 0;i < n;i++){
for(j = i + 1;j < n;j++){ // 因为不跟自己比值所以是i+1
if(arr[i] == arr[j]){
for(k = j;k < n-1;k++){
arr[k] = arr[k+1];
}
// 为什么要n--?
// (1)是因为覆盖了前面的值,后面的值就不需要显示了。
// (2)是为了数组被少了一个元素了。
n--;
// 为什么要j--?新值(刚被覆盖的值)还没有比较。
// 减了之后,上去循环会再加1,那么它还是3,还是会把新值重新比较。
j--;
}
}
}
// 打印去重之后的数组
for(i = 0;i < n;i++){
printf("%d ",arr[i]);
}
return 0;
}
【C语言】删除数组中重复的元素
最新推荐文章于 2024-08-13 00:33:12 发布