码迷,mamicode.com
首页 > 其他好文 > 详细

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。

时间:2015-10-25 19:28:33      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:c语言   位运算   寻找数组中的单独数   

#include<stdio.h>
#include<stdlib.h>
int find_f(int arr[], int len)      //寻找单独数
{
 int i, j, k;
 for (i = 0; i < len; i++)
 {
  k = 0;
  for (j = 0; j < len; j++)
  {
   if ((arr[i] & arr[j]) == arr[i])   //如果两数相同,k++
    k++;                          
  }
  if (k == 1) return (i);        //  如果(k=1),即本数组中只有自己一个,则返回此数的下标
 }
 return (len + 1);
}

int main()
{
 int arr[] = { 4, 6, 4, 5, 5, 3, 6 };    //数组初始化,可自由赋值
 int len = sizeof(arr) / sizeof(arr[0]),c;     //求数组长度
 c = find_f(arr, len);        //函数调用
 if (c > len)             //判断返回值是否合法
  printf("这组数中没有单独的数\n");
 else
  printf("%d\n",arr[c]);        //合法即输出单独的数
 system("pause");
 return 0;
}

本文只是在下在学习过程自己的想法,只能实现简单功能,可能还没考虑到程序的优化,与大神写出来的代码还有一定差距,如果那位大神发现了问题,请您不吝赐教,如果您还有更好的方法,不妨分享分享,谢谢!


本文出自 “分享中进步” 博客,请务必保留此出处http://xmwen1.blog.51cto.com/10730069/1706070

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。

标签:c语言   位运算   寻找数组中的单独数   

原文地址:http://xmwen1.blog.51cto.com/10730069/1706070

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!