101,102找出不同数
第一题:101个数中只有一个数字不同,找出这个数
第二题:102个数字,有两个互不相同的数和其他数字不同,找出这两个数
1 int main(int argc,char* argv[]) 2 { 3 //101个数有一个不一样的 4 int arr[101]; 5 for(int i=0 ; i<101 ; ++i) 6 arr[i]=5; 7 arr[66]=66; 8 9 int tmp=arr[0]; 10 for(int i=1 ; i<101 ; ++i) 11 tmp=arr[i]^tmp; 12 printf("101不同的数字为:%d\n",tmp); 13 14 //102个数有2个不一样的 15 int* arr2=(int*)malloc(102*sizeof(int)); 16 for(int i=0 ; i<102 ; ++i) 17 arr2[i]=66; 18 arr2[66]=77; 19 arr2[88]=99; 20 int tmp2=0; 21 for(int i=0 ; i<102 ; ++i) 22 tmp2=tmp2^arr2[i]; 23 int tool=((~tmp2)+1)&tmp2,num1=0,num2=0; 24 25 for(int i=0 ; i<102 ; ++i) 26 { 27 //printf("%d ^ %d num1=%d num2=%d\n", i ,arr2[i],num1,num2); 28 if((arr2[i] & tool) == 0) //【warning】“==”优先级比“&”要高,前面的与运算要加括号 29 num1=num1^arr2[i]; 30 else 31 num2=num2^arr2[i]; 32 } 33 printf("102不同数字1:%d 不同数字2:%d\n",num1,num2); 34 35 free(arr2); 36 37 system("pause"); 38 return 0; 39 }