- 给定两个整形变量的值,将两个值的内容进行交换。
这道题通常的做法是创建一个临时变量tmp,先将a的值赋给tmp,然后将b的值赋给a,最后再把tmp的值赋给a,这样就实现了交换。代码如下:
#include <stdio.h>
int main()
{
int a = 3;
int b = 6;
int tmp = 0;
printf("a = %d b = %d\n", a, b);
tmp = a;
a = b;
b = tmp;
printf("a = %d b = %d\n", a, b);
return 0;
}
如果不允许创建临时变量,交换两个数的内容,一般会进行加法运算,代码如下:
#include <stdio.h>
int main()
{
int a = 3;
int b = 6;
printf("a = %d b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d b = %d\n", a, b);
return 0;
}
当然还有一种方法,采用异或运算,异或的运算法则为:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假,即1^0=1,0^1=1,1^1=0,0^0=0.代码如下:
#include <stdio.h>
int main()
{
int a = 3;
int b = 6;
printf("a = %d b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}