在开始学习C语言的过程中,我们一定都做过这样一道题,交换两个数的值。可能大部分人都会这道题,但今天我想试试用不同的方法做这道题。
1、创建临时变量
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = 0; //创建临时变量c来暂时存储a的值
printf("交换前的两数为: %d %d",a,b);
c = a;
a = b;
b = a;
printf("交换后的两数为: %d %d",a,b);
return 0;
}
运算结果如下所示
2、在不创建临时变量的情况下交换两个数的值
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a + b;
b = a - b; //这里利用了一个小小的数学关系解决了交换问题
a = a - b;
return 0;
}
运算结果如下:
3、还是在不创建第三个变量的情况下,利用异或关系,将两个十进制数用二进制数表示出来,异或是指参与运算的两个数,相对应的位相同用0表示,不同用1表示,异或的符号为“^”。代码如下:
#include<stdio.h>
int main()
{
int a = 6; // a = 000000110
int b = 7; // b = 000000111
printf("交换前的两数为%d,%d\n",a,b);
a = a^b; // a = a^b = 000000001
b = a^b; // b = a^b = 000000110
a = a^b; // a = a^b = 000000111
printf("交换后的两数为%d,%d\n",a,b);
return 0;
}
运算结果如下
小结
以上就是用三种不同方法交换两个数的值,大家有兴趣的可以自己下去试试实践一下,不过需要注意的是在取值时一定要考虑数的范围,小心造成溢出。如果大家有不同的方法也欢迎留言评论,我们可以一起讨论。