笑一个好不好


私信TA

用户名:wlwxyghbh

访问量:337

签 名:

等  级
排  名 19480
经  验 719
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:利用按位异或来算,不会出现溢出的问题,不管多大的数都不会溢出。

按位异或是把数转换成二进制相比,位数的值相等为0,否则为1.

例如:0011^0101为0110

a=a^b;  此时a为一个新数

b=a^b;  此时b里面的值为最初a的值

a=a^b;  此时a里面的值为最初b的值

第一个a=a^b;中,a的值改变后,在与a,b进行按位异或会交换两个数值,有点绕,自己可以带数验证一下,

注意事项:

写的比较模糊,因为我也是不太会,如果能帮助到你,我会感到高兴的。

有问题也希望大家能指出,大家一起进步。

参考代码:

#include<stdio.h>

#define change(a,b) {a=a^b;b=a^b;a=a^b;}

int main(void)

{

    int a,b;

    scanf("%d%d",&a,&b);

    change(a,b);

    printf("%d\t%d\n",a,b);

  return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »