当前位置: 代码迷 >> C语言 >> 指针选题
  详细解决方案

指针选题

热度:120   发布时间:2006-02-13 22:27:00.0
以下是引用stdio在2006-2-13 21:57:00的发言:
我有一个利用异或运算交换两个变量的值
也不用中间变量

swap(int *x, int *y)
{
*a=*a^*b;
*b=*b^*a;
*a=*a^*b;
}

你这里面连x,y都没用到


----------------解决方案--------------------------------------------------------
A:是正确的
B:swap(int *p,int *q); 多一个; 号
C: a和b是同一段地址(0是地址) 所以*a=10,*b=20; 使得*a和*b的值都是20;
D: *x=&a,*y=&b; 多了*号

----------------解决方案--------------------------------------------------------

我还有个更加简单的,不过你们再想想吧
一下子说出来就没意思了
就一条语句而已


----------------解决方案--------------------------------------------------------
想不出来,一条语句?
----------------解决方案--------------------------------------------------------
?:?
----------------解决方案--------------------------------------------------------
^_^   别偷笑了....讲讲看....
----------------解决方案--------------------------------------------------------

a>b ? a : b
你们是不是在说交换呀


----------------解决方案--------------------------------------------------------
是呀,神说一条语句就交换了两个值.

a>b?a:b 这个..不可行吧...
----------------解决方案--------------------------------------------------------

那我就说了啊

简单的方法一共有两种,我第一次只独立想出了第一种,第二种是网络上流传的方法

第一种 a=a+b,b=a-b,a=a-b;
第二种 a^=b^=a^=b;

你们想到了吗?


----------------解决方案--------------------------------------------------------
失算了 我说的是Max用。
楼上所说第一种 以前省地方用 现在少了


----------------解决方案--------------------------------------------------------
  相关解决方案