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

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

程序员文章站 2024-03-16 20:16:34
...

/*
编程实现:
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
请找出这个数字。(使用位运算)
*/

//思路:
//一个数异或同一个数两次,这个数的值不会变;
//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);  //打印输出结果
	system("pause");
	return 0;
}