数值交换是一种在任何编程语言中都经常被使用的技巧,现在请你用C语言实现两个数值的交换。
输入格式:
输入两个整数a,b
输出格式:
交换a和b的值并输出。
输入样例:
3 4
输出样例:
4 3
法一:
#include<stdio.h>
int main()
{
int x,y;
scanf("%d %d", &x, &y);
int t = x;
x = y;
y = t;
printf("%d %d", x, y);
//三变量交换法
return 0;
}
此方法需要创建临时变量,这种方法最简单也最容易想到,但有时候会让我们不创建临时变量来进行数值交换。那我们就需要掌握一些别的方法呦!
法二:
#include<stdio.h>
int main()
{
int x, y;
scanf("%d %d", &x, &y);
x = x + y;
y = x - y;
x = x - y;
printf("%d %d", x, y);
//加减法
return 0;
}
此方法不需要创建临时变量(利用两数的和去减任意一个数),缺陷是两个数的和可能会越界。所以,我们在数值小的时候可以用。如果我们需要写这样的被调用函数,同样这是一种假交换,函数调用结束后原本的值并没有真正交换。
法三:
#include<stdio.h>
int main()
{
int x, y;
scanf("%d %d", &x, &y);
x = x ^ y;
y = x ^ y;
x = x ^ y;
printf("%d %d", x, y);
//异或运算
return 0;
}
此方法同法二不需要创建临时变量(利用异或),这里简单说一下,异或的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则取假(0)
此方法是基于二进制运算的基础,属于位运算中的一种运算