文章目录
- 一、题目
- 二、思路
- 三、代码实现
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
二、思路
第一步
首先这里先了解两个有关于位操作符异或的知识点 ,异或操作符的规则是相同为0,相异为1 。
通过上面我们可以得到两个结论:
1,
两个相同的数异或,他们的结果为0,因为两个数相同
,他们存储在计算机中的二进制位也相同,按照按位异或规则相同为0,所以他们的结果为0.
2,0异或上一个数,等于该数本身。
第二步
通过上面的结论,我们来分析这道题就很简单,因为该题中只是找出一堆数中一个只出现过一次的数,所以我们让所有的数一个一个异或不就得到了那个单身狗的数。
假设我们要求的一堆数是1,2,3,2,1
那个3就是我们要求的单身狗
我们让0 ^ 1 ^ 2 ^ 3 ^ 2 ^ 1 = 1 ^ 1 ^ 2 ^ 2 ^ 3 ^ 0 = 3
三、代码实现
int main()
{
int arr[5] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
//输入数组
for (int i = 0; i < sz; i++)
{
scanf("%d", &arr[i]);
}
//判断是否是单身狗
//0^3 = 3,3^3=0
int sin = 0;
for (int i = 0; i < sz; i++)
{
sin = sin ^ arr[i];
}
printf("%d",sin);
return 0;
}