前言
我对自己说,跨过去,春天不远了,不要失去发芽的心情。 ——林清玄
交换两个数是C语言中很经典的习题,非常简单且容易上手,但各位小伙伴们有没有想过除了借助中间变量以外的其他方法来完成这道题呢?诸君请看下文。
一、交换两个数之法一——经典解法
由于代码比较简单,解释就以注释的形式写在代码中了。
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 0;
int tmp = 0;
scanf("%d%d", &a, &b);
tmp = a;//借助中间变量存放a
a = b;//把b放到a中
b = tmp;//把tmp(a)放到b中
return 0;
}
二、交换两个数之法二——其他解法
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 0;
int tmp = 0;
scanf("%d%d", &a, &b);
a = a + b;//a中存放二者之和
b = a - b;//等价于a + b - b = a
a = a - b;//等价于a + b - a = b
return 0;
#三、交换两个数之法三——特殊解法
这里要做一些铺垫
^ 异或运算符
a ^ a = 0;
a ^ 0 = a;
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 0;
int tmp = 0;
scanf("%d%d", &a, &b);
a = a ^ b;
b = a ^ b;//等价于a ^ b ^ b = a ^ 0 = a
a = a ^ b;//等价于a ^ b ^ a = b ^ 0 = b
return 0;
总结
以上就是小桃子目前所学习到的交换两个数的全部方法。方法一较为常见,方法二和方法三较为少见,可以作为知识的扩展。
感谢你的阅读,如果觉得小桃子的博客有帮助的话,麻烦点个赞哦~
我是小桃子,我爱这个世界。
2024年2月27号23点17分 于寝室