如何不使用任何中间变量交换两个变量的值
2014-03-05 13:37
218 查看
1, 加减法
int a =
0, b = 0;
scanf("%d,%d",&a,&b);
a = a + b;
b = a - b;
a = a - b;
printf("%d,%d\n",a,b);
2, 乘除法
int a = 0, b = 0;
scanf("%d,%d",&a,&b);
a = a * b;
b = a / b;
a = a / b;
printf("%d,%d\n",a,b);
//此区别在于这里的 b 不可以为0
3, 异或法
int a = 0, b =
0;
scanf("%d,%d",&a,&b);
a ^= b; //a1 = a ^ b;
b ^= a; //b1 = b ^ a1 = b ^ (a ^ b) = b ^ a ^ b = a;
a ^= b; //a2 = a1 ^ b1 = a ^ b ^ a = b;
printf("a = %d,b = %d\n",a,b);
//应用的主要原理是:一个值经过同一个数的两次异或后值不变
int a =
0, b = 0;
scanf("%d,%d",&a,&b);
a = a + b;
b = a - b;
a = a - b;
printf("%d,%d\n",a,b);
2, 乘除法
int a = 0, b = 0;
scanf("%d,%d",&a,&b);
a = a * b;
b = a / b;
a = a / b;
printf("%d,%d\n",a,b);
//此区别在于这里的 b 不可以为0
3, 异或法
int a = 0, b =
0;
scanf("%d,%d",&a,&b);
a ^= b; //a1 = a ^ b;
b ^= a; //b1 = b ^ a1 = b ^ (a ^ b) = b ^ a ^ b = a;
a ^= b; //a2 = a1 ^ b1 = a ^ b ^ a = b;
printf("a = %d,b = %d\n",a,b);
//应用的主要原理是:一个值经过同一个数的两次异或后值不变
相关文章推荐
- 有两个变量a,b,不使用任何中间变量交换它们
- 不使用任何中间变量如何将a、b的值进行交换
- 如何将a、b的值进行交换,并且不使用任何中间变量?
- 面试题-不使用任何中间变量交换两个值的大小
- 如何将a,b的值进行交换,并且不使用任何中间变量
- 如何将a、b的值进行交换,并且不使用任何中间变量
- 变量交换 如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡, 但也可以在不借助任何其它变量的情况下完成。
- java算法4~交换两个整数,不能使用任何额外的变量
- 如何不使用第三方变量交换两个变量的值
- C语言(如何不使用第三个变量达到交换两个变量值的目的)
- 使用位运算实现判断一个数是否是2的n次方,实现不需要中间变量进行两个变量值的交换
- 不使用第三方中间变量交换两个变量
- 如何在不使用第三方变量的前提下,交换两个变量的值 (Java实现)
- 题目要求:将a,b两个数的值进行交换,并且不使用任何的中间变量。
- 声明两个变量:int n1=10,n2=20;要求将两个变量交换,最后输出n1为20,n2为10。扩展(*):不使用第三个变量如何交换?
- 有两个字符串数组,即 string1 与 string2,不使用任何C/C++库函数的情况下,请问如何交换这两个字符串数组中的数据
- 一面试题:不用任何中间变量,完成两个int型的交换。
- 如何在不使用临时变量的情况下交换两个变量的值?
- 不使用中间变量交换两个数值变量的值
- 交换两个变量的值,不使用第三变量的6种方法