优秀的编程知识分享平台

网站首页 > 技术文章 正文

C/C++编程语言经典面试题,交换两个变量值的方法都有哪些?

nanyue 2024-10-18 07:35:02 技术文章 27 ℃

在C/C++编程语言中,通常需要交换两个变量的值,那么本文就来说一说都有哪些方法可以交换两个变量的值。

一. 普通方法

这种方法是初学者最常用的方法,通过一个临时变量做中转,完成两个变量值得交换。代码如下

void swap(int &a, int &b) {
 int t = a;
 a = b;
 b = t;
}

二. 异或运算方法

通过异或运算实现两个变量的交换,因为异或运算有个比较明显的性质:相同两个数异或运算结果为零,零和任何数的异或运算结果为当前的任何数。那么a^b^a=a^a^b=0^b=b,所以我们可以将a^b保存起来,然后再分别异或a和b就得到了b和a,这样实现了两个变量值得交换,代码如下

void swap(int &a, int &b) {
 a = a ^ b;
 b = a ^ b;
 a = a ^ b;
}

这样都可以不需要第三个临时变量来做中转了,直接完成了交换。

三. 加减运算方法

可以将两个数先求和,然后再分别减去a和b,这样得到了b和a,也就完成了值交换。如下代码

void swap(int &a, int &b) {
 a = a + b;
 b = a - b;
 a = a - b;
}

其实,本质上方法二和方法三思想是一样的,都是利用了数学运算符将a和b两个值合并,再分别通过一个值得到另一个值。既然是这样,其它数学运算符也是可以使用的,比如乘法和除法。

四. 乘除运算方法

利用乘除运算方法,可以按下面这样交换

void swap(int &a, int &b) {
 a = a * b;
 b = a / b;
 a = a / b;
}

但是通常不会用乘除法来做两个变量值得交换,因为除数不能为零,还得做特殊值判断,使用起来很不方便。

Tags:

最近发表
标签列表