C语言:三道算法题
(1)交换两个整型变量的值,不能使用第三个变量
#include<stdio.h>
int main()
{
//交换两个变量的值,不能使用第三个变量
int x = 3;
int y = 5;
printf("交换前:x=%d,y=%d\n", x, y);
//算法一:相加相减
//缺点:如果参与运算的数很大,会溢出,整型溢出
x = x + y; // 3 + 5 = 8
y = x - y; // 8 - 5 = 3
x = x - y; // 8 - 3 = 5
//算法二:按位异或
//优点:不会溢出
// x = 011, y = 101
x = x ^ y; // 3 ^ 5 = 011 ^ 101 = 110
y = x ^ y; // 110 ^ 101 = 011 = 3
x = x ^ y; // 110 ^ 011 = 101 = 5
printf("交换后:x=%d,y=%d\n", x, y);
return 0;
}
在企业开发里面:最常使用引入第三变量的方法,可读性强,效率高