交换变量
交换变量的方式有很多,其中我们比较常用的就是设置一个中间变量进行交换。
#include <stdio.h>
int main(){
int a, b;
scanf("%d %d", &a, &b);
int temp = a;
a = b;
b = temp;
printf("a = %d\nb = %d\n", a, b);
}
如果不引用中间变量,我们可以通过运算进行交换
int main(){
int a, b;
scanf("%d %d", &a, &b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d\nb = %d\n", a, b);
}
我们还可以用按位异或运算符进行交换
内部执行我就不细讲了,大家可以自己再草稿纸上演算一遍
这种方式是直接以二进制的形式计算,所以速度会更快,但缺点也很有,交换的数据不能太大。
#include <stdio.h>
int main(){
int a, b;
scanf("%d %d", &a, &b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d\nb = %d\n", a, b);
}
课后练习
面试题 16.01. Swap Numbers LCCI
代码如下:
int* swapNumbers(int* numbers, int numbersSize, int* returnSize){
numbers[0] = numbers[0] ^ numbers[1];
numbers[1] = numbers[0] ^ numbers[1];
numbers[0] = numbers[0] ^ numbers[1];
*returnSize = 2;
return numbers;
}