目录
- 一.常规方法(引入空瓶变量)
- 二.题目要求,不允许创建临时变量
- 2.1 通过两数加法实现交换
- 2.2 按位异或操作符实现交换
题目:写代码实现两个变量的交换。(不允许创建临时变量)
一.常规方法(引入空瓶变量)
#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d",&a, &b);printf("交换前:a=%d b=%d\n", a, b);int tmp = 0;// 空瓶变量tmp = a;a = b;b = tmp;printf("交换后:a=%d b=%d\n", a, b);return 0;
}
二.题目要求,不允许创建临时变量
2.1 通过两数加法实现交换
#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);printf("交换前:a=%d b=%d\n", a, b);a = a + b; // a+b之和赋给ab = a - b; // 和-b为a赋给b a = a - b; // 和-b(b是a的值)为b赋给a printf("交换后:a=%d b=%d\n", a, b);return 0;
}
这里理清关系就不难理解。
2.2 按位异或操作符实现交换
#include <stdio.h>
int main()
{int a = 5;int b = 3;printf("交换前:a=%d b=%d\n", a, b);// 按位异或 :相同为0,相异为1// 逻辑与用加法实现交换类似// 按位异或具有交换律a = a^b;b = a^b;a = a^b;printf("交换后:a=%d b=%d\n", a, b);return 0;
}
以上需要注意的点都以代码注释标出,请小伙伴们留意查看~