欢迎关注点赞收藏⭐️留言
推荐up主专题文章 C语言100道经典编程题【详细分析版】
QQ:3052645092 不明白或有问题可以一起讨论哦
作者水平很有限,如果发现错误,请及时告知作者哦!感谢感谢!
//给数组删除重复的元素 #include
#define N 12 int main(){ int a[N] = { 1, 1, 2, 3, 3, 4, 6, 4, 8, 6,9,8}; int i = 0, j = 0, n = N; //n个数比较n-1次 printf("==========去重之前=========\n"); for (i = 0; i < n; i++){ printf("%d ", a[i]); } for (i = 0; i < n - 1; i++){ for (j = i + 1; j < n; j++){ if (a[i] == a[j]){ //i位置上的数和后面的比较要是相同,依次向前挪 for (int k = j; k < n - 1; k++){ a[k] = a[k + 1]; } --n;//把一个数字给干掉了所以n--; --j;//从j+1后面的位置一直依次向钱挪 j位置被换了新值,所以--j还要再次看 //当前j位置的数与前面的重复嘛 } } } printf("\n==========去重之后=========\n"); for (i = 0; i < n; i++){ printf("%d ", a[i]); } return 0; }
注意n--了之后,循环的访问范围就减少一个,所以被挪一个减少一个访问范围