#include<stdio.h> void Find_data(int *arr, int len, int *data1, int *data2) { unsigned int ret = 0; int i = 0; int tmp = 1; for (i = 0; i < len; i++) { ret ^= arr[i]; } while (1) { if ((ret&tmp) != 0) { break; } tmp <<= 1; } *data1 = *data2 = 0; for (i = 0; i < len; i++) { if (arr[i] & tmp) { *data1 ^= arr[i]; } else { *data2 ^= arr[i]; } } } int main() { int arr[] = { 1, 2, 4, 1, 2, 6 }; int len = sizeof(arr) / sizeof(arr[0]); int data1, data2; Find_data(arr, len, &data1, &data2); printf("%d %d", data1, data2); system("pause"); return 0; }