9-30做的一些笔试面试题目总结

找些有意思的:

1、宏定义,求z的结果

#define N 3 
#define Y(n) ((N+1)*n) 
z = 2*(N+Y(5+1)); 

解答:48  ,z=2*(3+((3+1)*5+1))=48。注意在宏定义中,只是简单的替换,如果希望得到预期结果,则Y(n)  ((N+1)*(n))

相关题目:

找出两个数中最大一个,定义宏Max

#define Max(a,b) ((a)>(b)?(a):(b))    //注意在定义宏的时候,加上括号。

但仅此而已还不行,还要考虑之前是否有人已经定义过Max(a,b)了

如果没定义过, 那就要加上

#if defined Max
#undef Max
#endif
#define Max(a,b) ((a)>(b)?(a):(b))

2、有2012瓶矿泉水,其中有一瓶有毒,请问至少需要多少只老鼠才能保证一次性找到有毒的矿泉水?

解答:11只,类似二分,所有矿泉水瓶分两堆,每堆中每瓶倒出来一点融到一起,让老鼠喝,如果老鼠没事,肯定这一堆没毒,则在另一堆,依照同样办法,递归进行,所以至少需要2^n>m瓶矿泉水,至少n个老鼠,走运的话,一个老鼠一直试喝到底,光荣牺牲,哈哈。

3. 有0-n这n+1个数,但是其中丢了一个数,请问如何找出丢了哪个数?

http://blog.csdn.net/kimili1987/article/details/8034394

4. 怎么判断一个数是2^n次方?

If (n & (n-1) == 0) 则是2^n(是朋友问我的一个题目,当时我说,用n & 全1 == n,当场被骂,所有数都符合,巨囧)



你可能感兴趣的:(面试)