分析:数组中只有一个数字出现了一次,其他成对出现,由异或运算的特性我们知道,两个相同的数异或结果为0;所以可以让这组数据连续异或,相同的异或后为0,最终的结果就是只出现一次的那个数字了;
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find(int *arr, int sz)
{
int tmp = 0;
int i = 0;
for (i = 0; i < sz; i++)
{
tmp ^= arr[i];
}
return tmp;
}
int main(void)
{
int arr[7] = {5, 4, 5, 1, 6 ,4 , 6};
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d出现了一次\n", find(arr, sz));
printf("\n");
system("pause");
return 0;
}