欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

找出现一次的2个数

程序员文章站 2022-03-13 14:51:29
...

找出现一次的2个数

#include <stdio.h>
#include <stdlib.h>
#define N 8
int main()
{
  //int数组a[8]
	int a[N]={1,1,2,2,3,3,12,5};
  //定义两个数组b[N]和c[N]
	int b[N];
	int c[N];

	int i,j,k;
	int res=0;
	//分割
	int split;
	for(i=0;i<N;i++){
	  res=res^a[i];
	}
	printf("res=%d\n",res);
	split=1;
	//int最多32位,找到了分割位
	for(i=0;i<32;i++){
		//按位与
		if(split&res){
		  break;
		}
		//左移
		split=split<<1;
	}
	j=0;
	k=0;
		//遍历
	for(i=0;i<N;i++){
        //true
		if(split&a[i]){
		  b[j]=a[i];
		  j++;
		}else{
		 c[k]=a[i];
		 k++;
		}
	}
    res=0;
	for(i=0;i<j;i++){
	  res=res^b[i];
	}
	printf("shu1=%d\n",res);
	res=0;
	for(i=0;i<k;i++){
	  res=res^c[i];
	}
	printf("shu2=%d\n",res);
	system("pause");
}
相关标签: C语言 c语言