交换两个数一般方法:
可以创建临时变量的方法
类比交换两瓶不一样的液体
一般代码:
#includeint main() { int a = 1; int b = 2; int temp = 0;//临时变量 printf("未交换前:%d,%dn", a, b); temp = a;//将 a 放到临时变量 temp 中 a = b;//b 赋值给 a,此时 a 的值变成 b 的值 b = temp;//将临时变量存储的 a 赋值给 b,b的值变成 a printf("交换后:%d,%d", a, b); return 0; }
代码结果:
代码评价:
优点:代码可读性高
缺点:不满足了题意()
题目中不能使用第三个变量,temp是第三个变量
这里使用加减法
加减法代码:
#includeint main() { int a = 1; int b = 2; printf("交换前:%d,%dn", a, b); a = a + b; b = a - b; a = a - b; printf("交换后:%d,%d", a, b); return 0; }
代码结果:
代码评价:
优点:满足了题意()
缺点: 1、当 a 和 b 刚好到 int 整形边界时,a = a + b 就会溢出
2、代码可读性低
解决可能溢出的现象
需要使用 按位异或
按位异或法代码:
#includeint main() { int a = 1;//二进制:0 0 0 1 int b = 2;//二进制:0 0 1 0 printf("交换前:%d,%dn", a, b); a = a ^ b;//二进制:0 0 1 1 十进制:3 b = a ^ b;//二进制:0 0 0 1 十进制:1 a = a ^ b;//二进制:0 0 1 0 十进制:2 printf("交换后:%d,%d", a, b); return 0; }
代码结果:
代码评价:
优点:数据不会溢出
缺点:可读性较低



