/* 编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算) */ //思路: //一个数异或同一个数两次,这个数的值不会变; //0异或任何数(1次)都等于该数; //定义一个局部变量赋值为0,让其依次与该组数据的 //每一项相与,最后观察该局部变量的值,就是要找的 //那个数. #include<stdio.h> #include<stdlib.h> //找只出现一次的数的函数 int first_occer_number(int arr[],int len){ int i; int num = 0; for (i = 0; i < len; ++i){ //遍历数组arr num ^= arr[i]; //num的值更新为num按位与arr[i] } return num; //返回num的值 } //主函数 int main(){ int arr[] = { 1, 2, 3, 4, 5, 4, 3, 2, 1 }; //定义数组并初始化 int len = sizeof(arr) / sizeof(arr[0]); //计算并保存arr的长度 int ret = first_occer_number(arr, len); //接收函数first_occer_number()函数调用结果 printf("%d\n", ret