【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);

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

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);

缺点:溢出风险

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);

缺点:

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

EOF

相关文章
|
3月前
【C language】统计某数中二进制1的个数
【C language】统计某数中二进制1的个数
【C language】统计某数中二进制1的个数
交换两个数的值的方法(三种)
交换两个数的值的方法(三种)
69 1
不使用第三变量。如何对2个数进行交换
不使用第三变量。如何对2个数进行交换
80 0
|
机器学习/深度学习 Python
python|求连续奇偶数的倒数和
python|求连续奇偶数的倒数和
200 0
|
机器学习/深度学习
【每日一题Day84】LC2283判断一个数的数字计数是否等于数位的值 | 哈希表
思路:使用哈希表统计每个数字出现的次数,再与字符串中的次数进行比较,如果所有数字次数均等于字符串中的次数,返回true;反之,返回false
61 0
|
前端开发 JavaScript
HDOJ 2016 数据的交换输出
HDOJ 2016 数据的交换输出
113 0
Qt_C++交换两个数
在编程过程中,交换两个数是我用常用的 ,这里做下简单的搬运
138 0
|
C语言
异或交换两个数的值
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/80180470 异或交换两个数的值是资源开销最小的方法,不需要中介数,原理简单的来说就是异或的负负得正。
985 0