交换两个数一般方法:
可以创建临时变量的方法
类比交换两瓶不一样的液体
一般代码:
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int temp = 0;//临时变量
printf("未交换前:%d,%d\n", 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是第三个变量
这里使用加减法
加减法代码:
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
printf("交换前:%d,%d\n", 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、代码可读性低
解决可能溢出的现象
需要使用 按位异或
按位异或法代码:
#include<stdio.h>
int main()
{
int a = 1;//二进制:0 0 0 1
int b = 2;//二进制:0 0 1 0
printf("交换前:%d,%d\n", 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;
}
代码结果:
代码评价:
优点:数据不会溢出
缺点:可读性较低
版权声明:本文为xuan3215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。