C++面试题之数a、b的值互换(不使用中间变量)

2025-05-27 0 100

题目要求:将数a、b的值进行交换,并且不使用任何中间变量。

程序如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38
#include<stdio.h>

void swapValue1(int &a, int &b) //使用中间变量交换数据

{

int temp = a;

a = b;

b = temp;

}

void swapValue2(int &a, int &b)//使用加减运算完成数据交换

{

a = a + b;

b = a - b;

a = a - b;

}

void swapValue3(int &a, int &b) //使用位运算交换数据

{

a^=b;

b^=a;

a^=b;

}

int main()

{

int a1 = 1, b1 = 2;

int a2 = 3, b2 = 4;

int a3 = 5, b3 = 6;

swapValue1(a1, b1);

swapValue2(a2, b2);

swapValue3(a3, b3);

printf("a= %d b= %d\\n",a1, b1);

printf("a= %d b= %d\\n",a2, b2);

printf("a= %d b= %d\\n",a3, b3);

return 0;

}

运行结果:

C++面试题之数a、b的值互换(不使用中间变量)

解析:
第一种:使用中间变量来达到交换数据的目的,这是最大众的方法,当然了不满足本题的要求。

第二种:
使用简单的加减操作来达到交换a、b值得目的。
缺点:a+b和a-b时,可能会到导致数据溢出。

第三种:
采用位运算的方法,按位异或运算。(建议采用这种方式)
异或运算:相同的二进制位异或运算为0,不相同的二进制位异或运算为1。

关于位运算的知识,参考http://www.zzvips.com/article/154264.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++面试题之数a、b的值互换(不使用中间变量) https://www.kuaiidc.com/74780.html

相关文章

发表评论
暂无评论