日期:2014-05-19  浏览次数:20805 次

这个程序你能写出来吗?
昨天老大跟我们说了个程序题,输入两个整数,不通过第三个变量能把它们的值交换过来(如a=1,b=2结果a=2,b=1),你能定出吗?

------解决方案--------------------
a=1;
b=2;
a=b+a;
b=a-b;
a=a-b;
------解决方案--------------------
呵呵。这个题c/c++的考试经常碰到。往往是要求速度最快。
2个变量按位异或运算3次

a= a^b;
b= a^b;
a= a^b;
------解决方案--------------------
a=b+a;
b=a-b;
a=a-b;


这个有可能会超过int的最大值
------解决方案--------------------


------解决方案--------------------
a=b+0*(b=a);
------解决方案--------------------
这种没什么意义,
能写出来,可就是不经济了
------解决方案--------------------
八戒
能否给讲讲为什么这么写,无耻下问
------解决方案--------------------
风过无痕
Red_angelX(八戒) 很帅嘛
------解决方案--------------------
把^用于int是什么意思,MSDN帮助上写得比较模糊,谁帮解释解释,谢谢.
------解决方案--------------------
基本的算法!
金字塔 迭代 ........!
------解决方案--------------------
測試了一下,樓主的:
int a = 1;
int b = 22;
a = ((a + b) + Math.Abs(a - b)) / 2;
b = ((a + b) - b - Math.Abs(a - b)) / 2;
應該是錯的。
結果為:
a=22
b=11
------解决方案--------------------
//来个全的,都是一条语句搞定

int a = int.MaxValue;
int b = int.MinValue;

a = b | (b = a) & 0;
b = a + (a = b) * 0;
a ^= b ^ (b ^= a ^ b);

Console.WriteLine(string.Format( "a={0},b{1} ", a, b));
------解决方案--------------------
都N多人问了
------解决方案--------------------
up
------解决方案--------------------
a^=b^=a^=b;
------解决方案--------------------
n多人问过这问题。
a=b+a
b=a-b
a=a-b


------解决方案--------------------
a=b+0*(b=a);
这个太帅了
------解决方案--------------------
独孤求败的 有待考证!
------解决方案--------------------
各路神仙,各显神通阿,
a= a^b;
b= a^b;
a= a^b;
------解决方案--------------------
a=b+0*(b=a);
在快速排序就使用这个