C语言:求一个数组中只出现一次的两个数
来源:互联网 发布:数据炼金 编辑:程序博客网 时间:2024/05/16 14:24
环 境: Windows 8,Visual Studio 2013
语 言: C语言
实验要求: 给定一个偶数个数的数组,其中有两个数只出现了一次,请通过C语言代码,让计算机帮你实现该功能
代码展示:
#include <stdio.h>#include <windows.h>#include <string.h>#include <assert.h>#pragma warning(disable:4996)int find_single_data(int arr[], int len, int *data1, int *data2){ assert(arr);//判空 assert(len > 0);//合法性判断 assert(data1);//指针合法性 assert(data2);//指针合法性 int tmp = arr[0];//中间变量,保护arr[0] int i = 1;//循环变量 while (i < len)//循环条件 { tmp ^= arr[i++];//tmp=tmp^arr[i++],与arr[0]相同的,32位比特位全为0,异或下来相同的数,尾数相同 } int flag = 1;//32位比特位最后一位是1,其余全为0 while (1){ if (tmp & flag){//第一个为1的比特位为真 break;//为1跳出 } else{ flag <<= 1;//flag=flag<<1(32位比特位左移1位操作 } } *data1 = 0; *data2 = 0; for (i = 0; i < len; i++){ if (arr[i] & flag){ //A *data1 ^= arr[i]; } else{ //B *data2 ^= arr[i]; } } return 0;}int main(){ int data1; int data2; int arr[] = { 23, 23,45, 45, 1, 2 }; find_single_data(arr, sizeof(arr) / sizeof(arr[0]), &data1, &data2); printf(" %d, %d\n", data1, data2); system("pause"); return 0;}
0 0
- C语言:求一个数组中只出现一次的两个数
- 求一个数组中只出现一次的两个数
- 求数组中只出现一次的两个数
- 找出一个数组中只出现一次的两个数
- C语言之-找一个数组只出现一次的两个数
- 数组中只出现一次的(一个数、两个数、三个数)
- 数组------找出数组中只出现一次的两个数
- 找出数组中两个只出现一次的数
- 数组中只出现一次的两个数
- 找出数组中两个只出现了一次的数
- 找出数组中只出现一次的两个数
- 位运算求数组中只出现一次的数
- 求一个数组中只出现一次的数字
- 数组中只出现一次的一个数
- 找出一个数组中只出现一次的数
- 查找数组中只出现一次的一个数
- 数组中只出现一次的数(1)(C++)
- 数组中只出现一次的数(2)(C++)
- 打造含有 Mali Graphics Debugger 支持的虚幻引擎应用程序
- HBase 默认配置
- List的所有方法
- 互斥+相交
- 【认证】【德国】Germany : Astra HD+
- C语言:求一个数组中只出现一次的两个数
- J2EE13规范
- android AlertDialog的简单使用
- CXF架构
- linux tail 命令详解
- linux下实现进度条小程序
- [00103]用Shell通配符匹配字符串
- shiro.ehcache.xml配置参数
- sql website注入 渗透测试