找些有意思的:
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
If (n & (n-1) == 0) 则是2^n(是朋友问我的一个题目,当时我说,用n & 全1 == n,当场被骂,所有数都符合,巨囧)