#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
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。
原文地址:http://xmwen1.blog.51cto.com/10730069/1706070