当前位置:   article > 正文

【C language】两个数的交换

【C language】两个数的交换

题解:两个数的交换(第三变量 + 数学求和 + 异或法)

1.题目

题目如下:请交换两个整形变量的数值,且不使用第三临时变量

2.第三变量法

int a = 10;
int b = 20;
printf("swap before: a = %d; b = %d", a, b);
int temp = a;
a = b;
b = temp;
printf("swap later: a = %d; b = %d", a, b);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

优点:常规且效率高
缺点:借用第三临时变量

3.数学方法

int a = 10;
int b = 20;
printf("swap before: a = %d; b = %d", a, b);

a = a + b;
b = a - b;
a = a - b;
printf("swap later: a = %d; b = %d", a, b);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

缺点:溢出风险

4.异或方法

int a = 10;
int b = 20;
printf("swap before: a = %d; b = %d", a, b);

a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("swap later: a = %d; b = %d", a, b);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

缺点:

  • 可读性差
  • 仅适用于整形
  • 效率低

EOF

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/680852
推荐阅读
相关标签
  

闽ICP备14008679号