交换两个数字的两种算法
如果有变量a=10, b=11,将a、b两变量的值进行交换,如何操作?1、使用第三个变量temp
#include <stdio.h>
int main() {
int a = 10;
int b = 11;
printf("Before switch:\n a=%d, b=%d\n", a, b);
int temp;
temp = a;
a = b;
b = temp;
printf("After switch:\n a=%d, b=%d\n",a ,b);
}
2、通过运算相互交换#include <stdio.h>
int main() {
int a = 10;
int b = 11;
printf("Before switch:\n a=%d, b=%d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("After switch:\n a=%d, b=%d\n",a ,b);
}PS:第二种方法需要一定的空间想像能力!! 输出结果为:
Before switch:
a=10, b=11
After switch:
a=11, b=10 还有第三个方法:
#include <stdio.h>
int main() {
int a = 10;
int b = 11;
// 利异或的规律a^b^b == a
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d, b=%d\n", a, b);
}
同样可以得出互换的效果
页:
[1]