C语言删除数组中的重复元素(详细分析版)

欢迎关注点赞收藏⭐️留言
推荐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;
}

C语言删除数组中的重复元素(详细分析版)_第1张图片

注意n--了之后,循环的访问范围就减少一个,所以被挪一个减少一个访问范围

你可能感兴趣的:(#,C语言——130题,c语言)