设为首页 加入收藏

TOP

C语言编程实现之一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
2017-11-17 08:28:25 】 浏览:360
Tags:语言编程 实现 之一个数 只有 两个数字 出现 一次 其他 所有 数字 找出

C语言编程实现之一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字

代码实现(环境:Visual Studio 2017)

//一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
//找出这两个数字,编程实现。
#include 
  
   
#include 
   
     void find(int a[], int sz) { int i = 0; int num1 = 0; int num2 = 0; int num = 0; int flag = 0; for (i = 0; i < sz; i++) { num = num^a[i]; } for (i = 0; i < 32; i++) { if (((num >> i) & 1) != 1)//找异或之后这个数字二进制数中最先出现的1的位置 { flag++; } else break; } for (i = 0; i < sz; i++) { if (((a[i] >> flag) & 1) == 1)//分成2组 num1 ^= a[i]; else num2 ^= a[i]; } printf("%d %d\n", num1, num2); } int main() { int a[] = { 1, 2, 2, 6, 6, 4, 4, 5, 8, 5 }; int sz = sizeof(a) / sizeof(a[0]); find(a, sz); system("pause"); return 0; }
   
  
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇后序式运算代码实例 下一篇C语言代码实例之最佳存款方案

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目