c语言----交换a,b的值(分别用临时变量,加减法,异或实现)

1.借助临时变量

</pre><pre name="code" class="objc">#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a+b;
  b=a-b;//b=a+b-b=a
  a=a-b;//a=a+b-a=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}
2.加法实现

#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a+b;
  b=a-b;//b=a+b-b=a
  a=a-b;//a=a+b-a=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}

3.异或实现

异或:两个值不相等时结果为真。如:1^1=0 

                                                       1^0=1

                                                       0^0=0

                                                       0^1=1

            则 1^0^1=0 得出一个结论:相同数异或会抵消。这也是实现两个数交换的依据。

#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a^b;
  b=a^b;//b=a^(b^b)=a
  a=a^b;//a=(a^a)^b=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值