您的位置:首页 > 编程语言 > C语言/C++

【C语言】一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字!

2017-06-25 18:39 666 查看
#include<stdio.h>
int main()
{
int i = 0;
int	ret = 0;
int pos = 0;
int arr[] = { 1,2,3,4,5,6,1,2,3,4 };
int sz = sizeof(arr) / sizeof(arr[0]);
int num1 = 0;
int num2 = 0;
for (i = 0; i < sz; i++)
{
ret ^= arr[i];
}
//找ret二进制中为1的一位
for (i = 0; i < 32; i++)
{
if (((ret >> 1) & 1) == 1)
{
pos = i;
break;
}
}
//分组
for (i = 0; i < sz; i++)
{
if (((arr[i] >> pos) & 1)==1)

{
num1 ^= arr[i];
}
}
num2 = num1^ret;
printf("num1 = %d   num2 = %d\n", num1, num2);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐