// 一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,
输出该一个数字。
解题思路:
1> 一个数和另一个按位异或,再按位异或自己就返回到另一个数;
2> 只需将数组的第一个与其他数按位异或;
3> 输出结果。
#include<stdio.h>
#include<stdlib.h>
//3.编程实现:
//一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
//请找出这个数字。(使用位运算)
int main()
{
int i = 0;
int arr[] = { 1, 1, 2, 3, 3, 4, 4 };
int len = sizeof(arr) / sizeof(arr[0]);
//自己与自己是相等的所以从第二个开始
for (i = 1; i < len; i++)
{
arr[0] = arr[0] ^ arr[i];
}
printf("%d\n", arr[0]);
system("pause");
return 0;
}
运行结果: