一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。找出这个数

利用异或具有交换律和结合律的性质,用一个ret依次与数组中的元素相异或,两个相同的数字就会异或为0,最后会剩下一个单独的数字,即为要找的数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
	int arr[11] = {0};
	printf("输入11个数字\n");
	for (int i = 0; i < 11; ++i) {
		scanf("%d", &arr[i]);
	}
	int ret = 0;
	for (int i = 0; i < 11; i++) {
		ret = ret ^ arr[i];
	}
	printf("%d\n", ret);
	system("pause");
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Whitebury/article/details/89047718