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

#include<stdio.h>


int main()
{
     int arr[]={1,3,3,1,4,6,4,5,5};
     int i=0;
     int len=sizeof(arr)/sizeof(arr[0]);
     
     /*找出单独的数,就将数组中的每个数全都取异或运算,
     如:arr[1]={1,3,3,1,4}
     01^11=10,再用这个结果10^11=01,01^01=00,000^100=100=4
    独的数结果就为1
     (1)a=a^b    c^a相当于c^(a^b)
     (2)自己异或自己两次相当于没有异或,还是自己。*/
     
     for(i=1;i<len;i++)
     {
          arr[0]=arr[0]^arr[i]; 
     }
     printf("the single number is:%d",arr[0]);
     return 0; 
}

wKioL1YrElCgqiIdAAC2aVZv5Mo085.jpg

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值