三种方法交换两个数的值:
- 方法一:利用中间变量,以此依托交换两个数的值
- 方法二:利用两数之间互相加减,来实现两数的交换
- 方法三:利用按位异或^来实现两数的交换,注意两数需转换成二进制比较
方法三思路:
位运算的理论基础:
x ^ x == 0
x ^ 0 == x
设M,N是常数,且a=M,b=N,则交换使用异或运算交换a和b的过程如下:
a = a^b=M^N;
b = a^b = M^N^N = M^0 = M;//b交换成功
a = a^b = M^N^M = M^M^N = 0^N = N;//a交换成功
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a =0;
int b =0;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
//法1:创建临时变量
int c = 0;
c = a;
a = b;
b = c;
//法2:利用a,b加减法
a = a + b;
b = a - b;
a = a - b;
//法3:利用位运算
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后的两个值为:");
printf("%2d%2d\n", a, b);
system("pause");
return 0;
}