例如,int arr[ ] = {1,2,4,7,1,2,4,6,6},除了数字7其他数字都是成对出现的,找出单独只出现一次的数并打印出来。

方法一:(for嵌套法)

#include<stdio.h>
int main()
{
int arr[] = { 1,2,4,7,1,2,4,6,6 };
int z = sizeof(arr) / sizeof(arr[0]); //计算数组的元素个数
int i = 0;
for (i = 0;i < z ;i++)
{
//统计arr[i]在arr数组中出现了多少次
int count = 0;
int n = 0;
for (n = 0; n < z; n++)
{
if (arr[i] == arr[n])
{
count++;
}
}
if (count == 1)
{
printf("单独出现的数字是:%d\n", arr[i]);
break;
}
}
return 0;
}

方法二:(按位异或法)

#include<stdio.h>
int main()
{
int arr[] = { 1,2,4,7,1,2,4,6,6 }; //1^1^2^2^4^4^6^6^7 = 0^7 = 7
int z = sizeof(arr) / sizeof(arr[0]); //计算数组的元素个数
int i = 0;
int b = 0;
for (i = 0;i < z ;i++)
{
b = b^ arr[i];
}
printf("单独出现的数字是:%d\n", b);
return 0;
}