黑马程序员技术交流社区

标题: 简单面试题,调换2个变量的值! [打印本页]

作者: 红茶2331    时间: 2013-12-7 11:02
标题: 简单面试题,调换2个变量的值!
本帖最后由 红茶2331 于 2013-12-7 11:32 编辑

int a=(int)(Math.random()*100);

int b=(int)(Math.random()*100);
不使用其他变量,把a和b的值调换!
一个分号求出来的是天才;
2个分号求出来的是英才;
3个分号求出来的只算是人才;                                                               

我只能做到这个:
a=a+b      //a=25,b=15
b=a-b       //a=25,b=10
a=a-b       //a=15,b=10                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

作者: ℡太阳当空照    时间: 2013-12-7 11:17
a=a+b-(b=a);  
作者: 25343215    时间: 2013-12-7 11:20
℡太阳当空照 发表于 2013-12-7 11:17
a=a+b-(b=a);

{:soso_e179:}

作者: 红茶2331    时间: 2013-12-7 11:36
℡太阳当空照 发表于 2013-12-7 11:17
a=a+b-(b=a);

厉害啊,
作者: 半夜雨半夜雨    时间: 2013-12-7 11:57
a=a^b^a;
b=b^a^b;
是这样吗
作者: 翼展哈哈    时间: 2013-12-7 12:25
我总结一下吧,毕老师的视频里提供了3种变量a,b互换数值的方法:
1、使用中间变量temp:
  1. int temp = a;
  2. a = b;
  3. b = a;
复制代码

2、不使用中间变量,但是容易溢出
  1. a = a + b;
  2. b = a - b;
  3. a = a - b;
复制代码

3、不使用中间变量,使用异或符号的技巧型方法
  1. a = a ^ b;
  2. b = a ^ b;
  3. a = a ^ b;
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2