全文目录
🎁主要知识点
🍗交换变量——临时变量
🍗交换变量——算术运算
🍗交换变量——异或运算
🍗交换变量——交换输出
📓课后习题
面试题 16.01. 交换数字
📑写在最后
🎁主要知识点
🍗交换变量——临时变量
利用临时变量,交换变量
#include <stdio.h> int main() { int a, b, tmp; while (scanf("%d %d", &a, &b) != EOF) { tmp = a; //临时变量保存a a = b; //b给a b = tmp; //将a的值给b printf("%d %d\n", a, b); } return 0; }
🍗交换变量——算术运算
这种情况要保证a+b不会溢出!!!
#include <stdio.h> int main() { int a, b, tmp; while (scanf("%d %d", &a, &b) != EOF) { a = a + b; b = a - b; a = a - b; printf("%d %d\n", a, b); } return 0; }
🍗交换变量——异或运算
异或运算的特性就是同0异1!真值表如下:
a b a ^ b
0 0 0
1 0 1
0 1 1
1 1 0
#include <stdio.h> int main() { int a, b, tmp; while (scanf("%d %d", &a, &b) != EOF) { a = a ^ b; b = a ^ b; a = a ^ b; printf("%d %d\n", a, b); } return 0; }
🍗交换变量——交换输出
偶尔并不是真的需要交换。
#include <stdio.h> int main() { int a, b, tmp; while (scanf("%d %d", &a, &b) != EOF) { printf("%d %d\n", b, a); } return 0; }
📓课后习题
面试题 16.01. 交换数字
面试题 16.01. 交换数字
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
解题思路
这就是直接利用异或交换就好了0.0
int* swapNumbers(int* numbers, int numbersSize, int* returnSize){ *returnSize = numbersSize; numbers[0] = numbers[0] ^ numbers[1]; numbers[1] = numbers[0] ^ numbers[1]; numbers[0] = numbers[0] ^ numbers[1]; return numbers; }