面试例题1:

有两个变量a和b,不用"if"、"?:"、"switch"或其他判断语句,找出两个数中间比较大的。

答案:

int max=(a+b+abs(a-b))/2

解析:若a>b,则(a+b+abs(a-b))/2为(a+b+a-b)/2=a.

         若a<b,则(a+b+abs(a-b))/2为(a+b+b-a)/2=b.

 

面试例题2:如何将a、b的值进行交换,并且不是有任何中间变量?

方案一:

a=a+b;

b=a-b;

a=a-b;

但是这样做的缺点是如果a、b都是比较大的二个数,a=a+b时就会超界。

方案二:

a=a^b;

b=a^b;

a=a^b;

这样做无须担心超界问题,无疑比方案一好。

posted on 2012-11-02 16:32  吉大依恋  阅读(288)  评论(0编辑  收藏  举报