面试题——a、b交换与比较

原创 2015年11月19日 00:08:06

面试题1:

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

方案一:

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

注:abs()--求绝对值

方案二:

int c = a-b;

char * strs[2] = {"a large","b large"};

c = unsigned(c)>>(sizeof(int)*8-1);

面试题2:给三个整数a、b、c, 函数实现取三个数的中间数,不可以用sort ,整数操作尽可能少

代码如下:

inline  int  max(int a, int b) { return a>=b?a:b;}

inline int  min(int a, int b) { return a<=b?a:b;}

inline int medium (int a,int b,int c)

{

int t1 =max(a,b);

int t2 = max(b,c);

int t3 = max(a, c);

return min (t1,min(t2,t3));

}

面试题3:如何将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;

无需担心越界问题,这样就比较好

这样做的原理是按位异或运算。按位异或运算“^”是双目运算符。其功能是参与运算的两个数个对应的二进制位相异或,当对应的二进制位相异时取1;

参与运算数仍以补码形式出现,

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

程序员面试宝典(第四版) —— 运算符问题 | a、b 交换与比较

运算符优先级的问题: 单目 —— 双目 —— 移位 —— 关系 —— 逻辑 —— 条件 —— 赋值 ——逗号 1、用一个表达式,判断一个数 X 是否为 2 的 N 次方(2,4,8,16,。。),...

写出float x 与“零值”比较的if语句——一道面试题分析

写出float  x 与“零值”比较的if语句 请写出 float  x 与“零值”比较的 if 语句: const float EPSINON = 0.00001; if ((x >= -...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

错题总结之变量交换

题目一:有两个变量a和b,不用“if”、"?"、"switch"或者其他的判断语句,找出两个数中间比较大的。           int  max = ((a+b) + abs(a-b)) / 2;...

Java中Integer的变量比较源码解析

面试例子:public static void main(String arg[]){ Integer a=3; Integer b=3; System.ou...

面试题:大小交换

还是比较基础的面试题:

qemu中反转比较与交换比较操作数方法

首先将各种比较操作以枚举形式定义: typedef enum {     TCG_COND_EQ,     TCG_COND_NE,     TCG_COND_LT,   ...

C/S 与 B/S 比较

原帖地址:http://blog.csdn.net/wuyq11/archive/2008/04/13/2288072.aspx  1.硬件环境不同:   C/S 一般建立在专用的网络上, 小范围里的...

简单的比较C语言下交换a,b数值的代码效率

以下几个语句都能交换a,b的值 1) a^=b^=a^=b; 2) temp = a; a = b; b = temp; 3) a = a^b; b = a^b; a = ...

FaceBook面试题 Implement strStrp(String a, String b)

Implement a function strStrp(String a, String b), which returns index where any permutation of b is ...

电路交换、报文交换、分组交换比较

(1)电路交换:由于电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路(由通信双方之间的交换设备和链路逐段连接而成),因而有以下优缺点。  优点:  ①由于通信线路为通信双方用户专用,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)