新奇的小玩意:五百强企业面试题

来源:百度文库 编辑:中财网 时间:2024/04/29 02:23:55

五百强企业面试题  

2011-07-12 15:41:35|  分类: 乱七八糟 |  标签:c  面试题   |字号 订阅


  一.最基本题型(说明:此类题型比较简单) 

  1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。 

  现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 

  2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟) 

  3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?(40秒-3分钟) 

  4.一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(20秒-2分钟) 

  5.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时) 

  6.在9个点上画10条直线,要求每条直线上至少有三个点?(3分钟-20分钟) 

  7.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的? 

  二.没有答案型(说明:这些题显然不是考你智力。而考的是你的反应能力。这种题大多数没有答案,但是要看你的反应喽!) 

  
 1.为什么下水道的盖子是圆的? 

  2.中国有多少辆汽车? 

  3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁? 

  4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个,你会去掉哪一个,为什么? 

  5.多少个加油站才能满足中国的所有汽车? 

  6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下? 

  7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出? 

  8.你怎样将Excel的用法解释给你的奶奶听? 

  9.你怎样重新改进和设计一个ATM银行自动取款机? 

  10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始? 

  11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁? 

  12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什么样商业计划?为什么? 

  13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件事将是什么? 

  三.难题(说明:这类题有一定难度,如果得不到答案,也不能说明什么。如果你想到了解题思路,那么答案马上就能出来。如果想不到思路,那么......就别想解出来了。) 

  
 1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费? 

  2.有一辆火车以每小时15公里的速度离开北京直奔广州,同时另一辆火车每小时20公里的速度从广州开往北京。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从北京出发,碰到另一辆车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请问,这只鸟共飞行了多长的距离? 

  3.你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的药丸的重量+1。只称量一次,如何判断哪个罐子的药被污染了? 

  4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对应关系? 

  5.人民币为什么只有1、2、5、10的面值? 

  6.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入罐子,怎么给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少? 

  四.超难题(说明:如果你是第一次看到这种题,并且以前从来没有见过类似的题型,并且能够在半个小时之内做出答案。只能说明你的智力超常......) 

  
 1.五个海盗抢到?00颗宝石,每一颗都一样大小和价值连城。他们决定这么分: 

  抽签决定自己的号码(1、2、3、4、5) 

  首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼 

  如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼依此类推 

  条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。 

  问题:第一个海盗提出怎样的分配方案才能使自己的收益最大? 

  2.一道关于飞机加油的问题,已知: 

  每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈, 

  问题: 

  
 为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场) 

  五.主观题(说明:在以后的工作过程中,我们可定会犯这样那样的错误。既然错误已经酿成,损失在所难免,我们只能想办法把损失减少到最小。如果能巧妙地回答出这些问题,再发生错误的情况下。能让客户有最少的抱怨,公司有最少的损失。) 

  
 1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间),解决方案就是免费更换电池或给50元购买该厂家新手机的折换券。请给所有已购买的用户写信告诉解决方案。 

  2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导,将城砖取回。 

  3.营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,王小姐的经理怎么写信给李先生试图将钱要回来? 

  算法题(说明:这些题就不是什么花样了,考的是你的基础知识怎么样。再聪明而没有实学的人都将会被这些题所淘汰。) 

  
 1.链表和数组的区别在哪里? 

  2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法? 

  3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法? 

  4.请编写能直接实现strstr()函数功能的代码。 

  5.编写反转字符串的程序,要求优化速度、优化空间。 

  6.在链表里如何发现循环链接? 

  7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。 

  8.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?) 

  9.给出一个函数来输出一个字符串的所有排列。 

  10.请编写实现malloc()内存分配函数功能一样的代码。 

  11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。 

  12.怎样编写一个程序,把一个有序整数数组放到二叉树中? 

  13.怎样从顶部开始逐层打印二叉树结点数据?请编程。 

  14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)? 

  解答与提示] 

  
一.最基本题型 

  
 1.取3根绳子。先拿任2根,总共有4个绳头,同时点燃3个。当第一根绳子烧完(30分钟) 

  同时点燃第4个绳头(也就是第二根绳子的剩下一个绳头)。当第二根绳子烧完(30分钟+15分钟),立刻点燃第三根绳子的两头。当第三根绳子烧完正好是1个小时15分钟(30分钟+15分钟+30分钟)。 

  2.4个。 

  3.略...... 

  4.如果参加过类似于奥林匹克数学班的,都应做过这些题。问他你的国家怎么走,他肯定指向的是诚实国。 

  5.略...... 

  6. 7.目前为止答案有三种:11、22、24。不知道哪个才是正确的! 

  二.没有答案型 

  
 1.圆井盖掉不下去 

  2.一千万(我这么认为) 

  3.我会回答顺时针方向。 

  4.北京。(原因是我生在北京长在北京,想让北京脱离是因为想去看看外面的世界,既然美国人问咱们这种政治问题,咱们也就回应一个政治玩笑罢了) 

  5.十万个(可以创造将近一百万的就业岗位呢) 

  6.答案是"This feature is by design." 如果考官要求给出更加合理的解释,就对他说:"如果您对此问题有更多疑问,请与它的供应商(或者与它的发明人)联系"。 

  7.如果不倾泻而出,这家旅馆将没有人去住。(所以这个问题最好去问旅馆的老板。) 

  8.告诉她这是最先进的东西,她不需要动手,我来帮她做就可。 

  9.我想斯皮尔伯格来回答这道题是在合适不过得了。 

  10.我觉得回放飞网呆上半个月比较合适。 

  11.这题我没有任何想法,因为没有工作经验,所以完全没听明白他问的是什么! 

  12.做微软的OEM,这样能够更好的服务微软。 

  13.把主机箱集成在一个液晶显示器中! 

  三.难题 

  
 1.切两刀,分为1/7、2/7、4/7三段。第一天给1/7;第二天给2/7,要回1/7;第三天给1/7 ;第四天给4/7 要回1/7+2/7;第五天给1/7;第六天给2/7,要会1/7;第七天给1/7 

  2.[Johnson提供]北京到广州的铁路线全长2295千米,不管鸟怎么飞,它飞行的时间就是两列火车相遇的时间,两列火车相遇时间是(15t+20t)=2295,t近似等于65小时,65乘以鸟飞行的速度30,1950千米。总之答案就是30*两列火车相遇的时间。 

  3.依次从四个罐子中取出1、2、3、4个药丸,结果不用说了吧! 

  4.先开一个,开很长时间。然后关掉,再开另一个。出去看,亮着的那个不用说。剩下的两个不亮的,按照灯泡的温度来进行判断。 

  5.至今不知道应如何解答。 

  6.不清楚。可能是50%。 

  超难题 

  
 第一题:期待高手 

  第二题:[johnson提供]前提是理想状态的油必须瞬间加满。我的答案是六架飞机。 

  说明: 1、飞机1、飞机2等飞机n为飞机的个数 

  2、把整个圆(飞行轨道)周等分为8份,分别定为O点(起飞点),依次为A、B、C、D、E、F、G 

  设想一下,按题目要求一架飞机要想不加油安全的飞并且安全返回,能飞行最远距离是一个圆周的1/4,既飞行度距离是OB;如果给另外一架飞机加油的话它只能飞行1/8的距离OA。这些前提的存在,再根据题意就可推出如下的飞行放案: 

  1、首先同时从O点起飞三架飞机,当他们飞到A点时,飞机1、飞机2将继续飞行,飞机三给飞机1、飞机2加油,各加1/4的油,这样飞机1和飞机2就满油了;飞机3用剩下的1/4(飞到A点已经用去了1/4的油)的油刚好能飞回起点。 

  2、飞机1、飞机2继续飞行。飞到B点时,飞机1将继续飞行,飞机2给飞机1加油,加1/4的油,这样飞机1的油箱又会加满油;飞机2用剩下的2/4(飞到B点又用去了1/4的油再加上给飞机1加的1/4油)的油刚好飞回起点。 

  3、飞机1继续飞行,因为满油,所以可以飞半圈飞到F点。 

  4、当飞机1飞到D点的时刻,同时从O点反方向派出三架飞机,飞机4、飞机5、飞机6。这样能保证飞机1飞到F点时刚好有两架飞机到达F点。(飞机4、飞机5、飞机6是沿着OG的方向飞行) 

  5、当飞机4、飞机5、飞机6飞到G点时,飞机6同时给飞机4、飞机5加油。飞机4、飞机5满油继续飞,飞机6安全飞回O点。 

  6、飞机1、飞机4、飞机5同时飞到F点,此时刻各加飞机的油料为飞机1——0 飞机4——3/4 飞机5——3/4。这下就方便了,飞机4和飞机5分别给飞机1一点点1/4的油料,三架飞机就安全的飞回O点了。至此,飞机1完成了环球飞行,并且其他飞机也都安全到达起飞点,总共派出了6架飞机。 

  主观题 

  
 1.告诉用户我公司为答谢广大顾客长时间以来的厚爱,顾客可以持原电池免费更换使用寿命为原电池一倍的新型电池。或者可以持购买发票,获得50元购买该厂家新手机的折换券。 

  2.信件如下: 

  "xxx领导:您好!我馆近期将展出一批珍贵文物,让更多的人能够真正的体会到中华民族文明的悠久、灿烂。我们希望能将您所拥有的明代的城砖展出。并且我们将在博物馆内设置专栏,宣传您对中华民族悠久文化的保存所作出的巨大贡献,让更多的华夏子孙看到, 

  并且亲身体验到华夏文明的悠久历史,从而加强中华民族的凝聚力!" 

   解释: 领导看过这封信以后,如果不拿出城砖。那么也就说明他不想让更多的人看到中华民族的灿烂文明,不想让中华民族有更强的凝聚力。自然也就会拿出城砖。如果领导问到何时展出完毕,可以告诉他博物馆希望永久展出这些物品,领导自然也就无话可说了。 

  3.信件如下: 

  " 尊敬的顾客,您好!由于工作人员的失误,误将一台样品机卖给您。为了您能够更好的使用我公司的产品,我公司决定为您免费更换同等价位的笔记本一台。并且我们有性价比更加优越的xxxII型笔记本电脑,售价20000元人民币。如果您此时购买,我们将会以19000元的优惠价格售出。" 

  2008年微软面试题 

  一个3岔路口,一条是上天堂的,2条是下地狱的,路口中间站了一个神仙,这个神仙可能说真话也可能说假话,你只能用一句话来问出这条上天堂的路, 而且越简单越好.问:这是什么话? 

  世界五百强面试题库—google 

  1、一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么? 答:2,2,9, 1岁不可能 

  2、有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那么还有$1呢? 

  答:没错,三个人付了27块,老板拿了25块,小弟拿了2块 

  3、有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。 他们每人怎样才能取回黑袜和白袜各两对呢? 答:不知道,还要仔细想想 

  4、有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从洛杉矶出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟飞行了多长距离? 答:记好两车相遇时间,就是鸟飞行时间,乘以其飞行速度就得到飞行距离。 

  5、你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少? 答:不知道,还要仔细想想 

  6、你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了? 

  答:不知道,还要仔细想想 

  7、你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,抓取两个同种颜色的果冻。抓取多少个就可以确定你肯定有两个同一颜色的果冻? 

  答:4 9、对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。 答:不知道,还要仔细想想 10、想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下? 答:人的眼睛是左右对称的 

  8、一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子? 

  答:3 

  世界五百强企业面试题库之——IBM 

  1.一个粗细均匀的长直管子,两端开口,里面有4个白球和4个黑球,球的直径、两端开口的直径等于管子的内径,现在白球和黑球的排列是wwwwbbbb,要求不取出任何一个球,使得排列变为bbwwwwbb. 

  2.一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来? 

  3.在一个平面上画1999条直线最多能将这一平面划分成多少个部分? 

  4.在太平洋的一个小岛上生活着土人,他们不愿意被外人打扰,一天,一个探险家到了岛上,被土人抓住,土人的祭司告诉他,你临死前还可以有一个机会留下一句话,如果这句话是真的,你将被烧死,是假的,你将被五马分尸,可怜的探险家如何才能活下来? 

  5.怎样种四棵树使得任意两棵树的距离相等。 

  6.27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶? 

  7.有一座山,山上有座庙,只有一条路可以从山上的庙到山脚,每周一早上8点,有一个聪明的小和尚去山下化缘,周二早上8点从山脚回山上的庙里,小和尚的上下山的速度是任意的,在每个往返中,他总是能在周一和周二的同一钟点到达山路上的同一点。例如,有一次他发现星期一的8点30和星期二的8点30他都到了山路靠山脚的3/4的地方,问这是为什么? 

  8.有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间? 

  9.村子中有50个人,有人养有一条狗,或一只猫,具体多少条狗不明。在这50只动物中有生病的(这种病不会传染)。于是人们就要找出得病的。养狗的人可以观察其他养猫的,相反养猫的可以观察其它养狗的,以判断它们是否生病。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响,到了第三天传来一声枪声,第四天又有一声,问有几条病狗,几条病猫,如何推算得出? 

  世界五百强面试题库——之摩托罗拉 

  摩托罗拉笔试的智力题 

  
甲,乙,丙,丁四个人得罪了皇帝,皇帝要惩罚他们,手段比较委婉,他是这么做的 

  有一座高墙,甲站在墙的一边,面朝墙,乙,丙,丁站在墙的另一边,面朝墙站成一条 线,乙最前,丙在中间,丁在最后,他们都面向墙的。 

  将甲,乙,丙,丁四个人的眼睛蒙上,给他们各自戴上一顶帽子,帽子的颜色分别是红,红,蓝,蓝。将他们眼睛上的纱布拿开,他们不能看自己头上帽子的颜色,站在前面的人看不到后面人头上帽子的颜色,站在后面的人可以看到前面人头上帽子的颜色。他们中只要有人正确说出自己头上帽子的颜色,四个人都释放,一旦说错,四人都处死。 

  注意,只有一次开口说话的机会。他们都很聪明,问:谁最后会开口说话? 

  笔答题 

  
1、智能指针,com实现的原理, 

  2、printf()可变参数如何实现 

  3、标准模板库vector追加数据如何实现。是底层如何实现,不能用现有的东东。 

  4、还有,java的垃圾收集机制如何实现为什么?如果是你自己实现垃圾收集机制,如何实 

  现? 用什么数据结构。 

  5、二叉排序树和哈希表那个查找效率高,实用于pda 。 

  6、.net的底层实现机制。 

  7、进程间通信如何实现。 

  8、还有迭代问题,什么问题用迭代,迭代在操作系统中如何实现的。 

  9、如何交换两个变量,不能用中间变量。 

  10、c与c++static函数的区别??? 

  11、const 函数的作用,如何实现钩子函数。 

  12、两层容错技术怎么实现? 

  13、写出函数指针,函数返回指针,const指针,指向const的指针,指向const的const指针. 

  14、函数调用如何实现,注意什么问题。 

  15、指针和引用的差别, 

  16、拷贝构造函数如何实现,什么情况下会用到。 

  世界五百强面试题库索尼 

  
 1.你的朋友生病住院了,你把 自己身上的钱都买了补品去看望他,当敲门进入病房后发现自 己走错房间了,但是很巧的是,你公司里的一位德高望重的上 司在这个病房住院,他看到你很高兴,并招呼你坐下,碰到这种情况你该怎样处理? 

  2.公司有批产品,有微小的质量问题,但是并不影响使用!你会: 

  A:把他直接卖给你的客户! 

  B:因为有质量问题,所以我拒绝销售这批产品! 

  C:跟公司要个优惠的政策,然后把产品销售出去! 

  请做出选择,并说明理由! 

  3.你照镜子的时候,你举起左手,镜子里出现的状况是你举起右手!但是你抬头,镜子里,你也是抬头! 

  请你说明这是为什么? 

  4.你出差的时候忘记了带机票,你打电话给家人,告诉他在39-40页之间,让他找到帮你送过来,但是他找了很长时间,并没有找到机票,试说明为什么? 

  世界五百强面试题库联想 

  
笔试题: 

  
.设计函数 

#define isspace(ch) (c == ' ' || c == '\f' || c =='\n' || c == '\r' || c == '\t' || c == 'v')
  
int atoi(char *s)。 

  int atoi(char *s) 
  { 
   int sign_val = 1; 
   int val = 0; 

if(s == NULL)return 0;
   while (isspace(*s)) 
   ++s; 

   if (*s == '-')  { 
   sign_val = -1;
   ++s;
   } 

   while (*s >= '0' && *s <= '9') { 
   val = val * 10 + (*s - '0'); 
   s++; 
   } 

  return (sign_val * val); 
 } 

  int i=(j=4,k=8,l=16,m=32); printf("%d", i);输出是多少? 

  
结果为: 32. 

  .解释局部变量、全局变量和静态变量的含义。 

  
 局部变量包括函数的形参,包含在函数体或者语句块内的变量,局部变量的生存期在退出函数或语句块后结束。 

  全局变量是指在所有函数和语句块之外的变量,它对于整个程序均可见,全局变量的生存期与程序的生存期相同. 

  静态变量指由关键字static声明的变量,它的作用域和其他变量一样,由它所在的位置决定,如在函数体或语句块中声明,则只在函数体或语句块可见,其他地方均不可见.它的生存期与程序相同. 

  .解释堆和栈的区别。简述如下

  
 栈上分配的内存,由系统自动分配,系统会自动收回.如果需要动态分配内存,则只能通过malloc/new在堆上分配的内存,使用完毕后,通过free/delete来释放内存。 

  .论述含参数的宏与函数的优缺点。 

  
含参数的宏优点:省去了函数调用的开销,运行效率高. 

  含参数的缺点: 

  由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出错误的结果. 

  如: 

  #define max(a, b) ( ((a) > (b)) ? (a) : (b) ) 

  如果程序中出现这样的调用: max(a++, b); 

  将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.另外,如果程序中有多次宏替换的话,可能导致代码体积变大.函数的优点是: 

  没有带参数宏可能导致的副作用,计算的正确性较宏更有保证. 

  函数调用的缺点: 

  函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高. 

  智力题: 

  
 1、一条绳子,从一头点燃,全部烧完要耗时1个小时,问如何用这条绳子测出半个小时。 

  2、排成3行3列的矩阵形式的九个点。如何用一笔划出4条直线,经过这所有九个点。 

  3、有100盏灯,从1~100编上号,开始时所有的灯都是关着的,第一次,把所有编号是1的倍数的灯的开关状态改变一次;第二次,把所有编号是2的倍数的灯的开关状态改变一次;第三次,把所有编号是3的倍数的灯的开关状态改变一次;以此类推,直到把所有编号是100得倍数的灯的开关状态改变一次。问,此时所有开着的灯的编号。