这个程序你能写出来吗?

liuyun1987 2007-05-30 09:31:10
昨天老大跟我们说了个程序题,输入两个整数,不通过第三个变量能把它们的值交换过来(如a=1,b=2结果a=2,b=1),你能定出吗?
...全文
512 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
WuZongBo 2007-05-30
  • 打赏
  • 举报
回复
都N多人问了
王集鹄 2007-05-30
  • 打赏
  • 举报
回复
//来个全的,都是一条语句搞定

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));
---涛声依旧--- 2007-05-30
  • 打赏
  • 举报
回复
commandos(孤独求胜) 的方法,最簡單且有效
a= a^b;
b= a^b;
a= a^b;
---涛声依旧--- 2007-05-30
  • 打赏
  • 举报
回复
測試了一下,樓主的:
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
Mirricle 2007-05-30
  • 打赏
  • 举报
回复
^是按位异或
转成二进制后 相对应的位进行异或
1 0 异或 1
1 1 异或 0
0 0 异或 0
nmgwolf 2007-05-30
  • 打赏
  • 举报
回复
基本的算法!
金字塔 迭代 ........!
ProjectDD 2007-05-30
  • 打赏
  • 举报
回复
把^用于int是什么意思,MSDN帮助上写得比较模糊,谁帮解释解释,谢谢.
guxingdao 2007-05-30
  • 打赏
  • 举报
回复
风过无痕
Red_angelX(八戒) 很帅嘛
liuyun1987 2007-05-30
  • 打赏
  • 举报
回复
不错...听说这是一个公司的面试题
我写的如下:
  static void Main(string[] args)
{
Console.Write("please inter two number:");
string[] str = Console.ReadLine().ToString ().Split (',');
int a =Int32.Parse (str[0]);
int b =Int32 .Parse ( str[1]);
a = ((a + b) + Math.Abs(a - b)) / 2;
b = ((a + b)-b - Math.Abs(a - b)) / 2;

Console.Write("a:{0},b:{1}",a,b);
Console.Read();

}
kkun_3yue3 2007-05-30
  • 打赏
  • 举报
回复
八戒
能否给讲讲为什么这么写,无耻下问
wenbin 2007-05-30
  • 打赏
  • 举报
回复
这种没什么意义,
能写出来,可就是不经济了
Red_angelX 2007-05-30
  • 打赏
  • 举报
回复
a=b+0*(b=a);
qgcsoft 2007-05-30
  • 打赏
  • 举报
回复

Mirricle 2007-05-30
  • 打赏
  • 举报
回复
a=b+a;
b=a-b;
a=a-b;


这个有可能会超过int的最大值
commandos 2007-05-30
  • 打赏
  • 举报
回复
呵呵。这个题c/c++的考试经常碰到。往往是要求速度最快。
2个变量按位异或运算3次

a= a^b;
b= a^b;
a= a^b;
ismezy2002 2007-05-30
  • 打赏
  • 举报
回复
a=1;
b=2;
a=b+a;
b=a-b;
a=a-b;
Himoso 2007-05-30
  • 打赏
  • 举报
回复
b = a + (a = b) * 0
xiaomatian 2007-05-30
  • 打赏
  • 举报
回复
C语言下的老问题了。
jingkunli 2007-05-30
  • 打赏
  • 举报
回复
很简单的一道面度题!!
cq_lqj 2007-05-30
  • 打赏
  • 举报
回复
也可以用队列的“先进后出”的方法就交换了

立即成为编程经验丰富的程序员,详见:http://www.psec.net.cn
加载更多回复(10)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧