你当前所在位置:首页 > IT课程常见问题 > 学编程必看:10道逻辑思维测试题(附答案)

学编程必看:10道逻辑思维测试题(附答案)

摘要:学会编程,不仅可以成为你谋生的技能,还能大大提高你的逻辑思维能力,当你面对人生各种困境时,你才会快速找到解决办法。

学会编程,不仅可以成为你谋生的技能,还能大大提高你的逻辑思维能力。

当你面对人生中各种困境时,你的逻辑思维能力可以帮你很快的找到解决办法。

反之,如果一个人的逻辑思维能力很糟糕,他的人生各方面往往也会很糟糕。

1.jpg

电影《教父》里面有句台词,“花半秒钟就看透事物本质的人,和花一辈子都看不清事物本质的人,注定是截然不同的命运。”

这里说的“本质”,就是指逻辑思维能力。

弄懂以下10道逻辑思维测试题,可以快速提高你的逻辑思维能力,学编程的朋友,一定要好好看看哦!(点击问题下方图片,可显示答案。)


一、有口井7米深,有个蜗牛从井底往上爬,白天爬3米,晚上往下坠2米,问蜗牛几天能从井里爬出来?

11.jpg

答案:蜗牛5天能从井里爬出来。

第一天白天向上爬3米,晚上坠2米,累计上升高度为1米,列式为3-2=1;

第二天白天向上爬3米,晚上坠2米,累计上升高度为2米,列示为1+3-2=2;

第三天白天向上爬3米,晚上坠2米,累计上升高度为3米,列示为2+3-2=3;

第四天白天向上爬3米,晚上坠2米,累计上升高度为4米,列示为3+3-2=4;

第五天白天向上爬3米,4+3=7,就可以爬出井口了。


以上是比较笨的解法,另一种比较快速聪明的解法为:


设需要X天蜗牛爬出7米深的井,那么根据题意可得

(3-2)*(X-1)+3=7,解出方程式可得X=5。

3-2为每天蜗牛的实际上升高度,第X天白天蜗牛爬升3米即可爬出井口,那么X-1表示在第X天之前的累计爬升高度。


所以有口井7米深,有个蜗牛从井底往上爬 ,白天爬3米,晚上坠2米。蜗牛5天能从井里爬出来。


二、一毛钱一个桃,三个核换一个桃,拿1块钱能吃几个桃?

22.jpg

答案:


1块钱买10个桃,剩10个核;

9个核换3个桃,加上余下的一个,剩4个核;

3个核换一个桃,加上余下的一个,剩2个核;

赊1个桃,吃完后剩3个核都给卖桃的,顶赊的那个。

加起来,1块钱能吃15个桃。


三、小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生的年龄不一样。请推出这三个人中谁是商人?谁是大学生?谁是士兵?

33.jpg

答案:


小张是商人,小赵是大学生,小王是士兵。 


解题思路:假设小赵是士兵,那么就与题目中"小赵的年龄比士兵的大"这一条件矛盾了,因此,小赵不是士兵;假设小张是大学生,那就与题目中"大学生的年龄比小张小"矛盾了,因此,小张不是大学生;假设小王是大学生,那么,就与题目中"小王的年龄和大学生的年龄不一样"这一条件矛盾了,因此,小王也不是大学生。所以,小赵是大学生。由条件小赵的年龄比士兵的大,大学生的年龄比小张小得出小王是士兵,小张是商人。


四、姐姐上街买菜回来后,就随手把手里的一些零钱放在了抽屉里,可是,等姐姐下午再去拿钱买菜的时候发现抽屉里的零钱没有了,于是,她就把三个妹妹叫来,问她们是不是拿了抽屉里的零钱。

老二说:“我拿了,中午去买零食了。”

老三说:“我看到老二拿了。”

小妹说:“总之,我与老三都没有拿。”

这三个人中有一个人在说谎,那么到底谁在说谎?谁把零钱拿走了?

44.jpg

答案:


丙说谎,甲和丙都拿了一部分。

假设甲说谎的话,那么乙也说谎,与题意不符;

假设乙说谎,那么甲也说谎,与题意不符;

那么,说谎的肯定是丙了,只有甲和丙都拿零钱了才符合题意。


五、现有2个空水壶,容积分别为5升和6升,如何只用这2个水壶取得3升的水?(不能借助别的容器)

55.jpg

答案:


6升水壶a,5升水壶b

将a装满,倒入b中,a剩余1升水;

倒空b,a中剩余的水倒入b中,再将a装满,倒入b中,a剩余2升水;

倒空b,a中剩余的水倒入b中,再将a装满,倒入b中,a剩余3升水。


六、U2合唱团在17分钟 内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。一次同时最多可以有两人一起 过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒是不能用丢的方式来传递的。四个人的步行速度各不同,若两人同行则 以较慢者的速度为准。Bono需花1分钟过桥,Edge需花2分钟过桥,Adam需花5分钟过桥,Larry需花10分钟过桥。他们要如何在17分钟内过 桥呢? 

66.jpg

答案:


2+1先过,用了2分钟;

然后1回来送手电筒,用了1分钟;

5+10再过,用了10分钟;

2回来送手电筒,用了2分钟;

2+1过去,用了2分钟;

总共用了2+1+10+2+2=17分钟。


七、有7克、2克砝码各一个,天平一只,如何只用这些物品称三次,将140克的盐分成50、90克各一份?

77.jpg

答案:


解法一:

①用天平将盐分成70g两份,即140 ->70 + 70

②用天平将其中一份70g的盐分成35g两份,即70 ->35 + 35

③把两个砝码放在天平两边,将35g的盐分成20克和15克,即35 + 2 + 7 ->(20 + 2) + (15 + 7)

将得到的20g盐和最开始的70g盐放在一起即得到90g的盐,其余的盐放在一起就是50g。即

90 = 20 + 70

50 = 15 + 35


解法二:

①140 + 2 ->71 + (69 + 2)

②71 + 9 ->40 + (31 + 9)

③31 + 69 -> 50 + 50

90 = 50 + 40


解法三:

①140 ->70 + 70

②70 ->61 + 9  将两个砝码放在一边,即可称出9g

③61 -> (9 +2) + 50

90 = 9 + 11 + 70


解法四:

①140 ->70 + 70

②70 ->35 + 35

③35 + 70 + 2 + 7 ->(50 + 7) + (55 + 2)

90 = 55 + 35


解法五:

①2 + 7 = 9

②2 + 7 + 9 =18

③7 + 18 = 23 + 2

50 = 23 + 9 +18


解法六:

①140 + 2 ->71 + (69 + 2)

②7 = 2 + 5;69剩64

③2 + 5 + 7 = 14;64剩50

90 = 14 + 5 + 71


解法七:

①2 + 7 = 9

②7 + 9 = 16

③9 + 16 = 25

50 = 25 + 16 + 9


解法八:

①2 + 7 = 9

②7 + 9 = 2+ 14

③2 + 14 + 9 = 18 + 7

50 = 2 + 7 + 9 + 14 + 18


八、有12个鸡蛋,其中有1个是坏的(重量与其余鸡蛋不同),现要求用天平称三次,称出哪个鸡蛋是坏的!

88.jpg

答案:


把这12个鸡蛋分成3组(1,2,3,4)、(5,6,7,8)和(9,10,11,12)。

首先称(1,2,3,4)和(5,6,7,8),称的结果有如下几种可能:


▼ 第一种可能:(1,2,3,4)=(5,6,7,8)【第一次称重】

说明1~8的鸡蛋都是好鸡蛋。此时,再接着称(6,7,8)和(9,10,11)。【第二次称重】

此时会存在以下三种可能性:

1)如果(6,7,8)=(9,10,11),说明坏鸡蛋是12。在这种情况下,只需要称2次就能找出坏鸡蛋。


2)如果(6,7,8)>(9,10,11),说明坏鸡蛋在(9,10,11)中,同时可以说明坏鸡蛋一定比好鸡蛋轻。接着称9和10。如果9=10,则说明11为坏鸡蛋;否则,轻的为坏鸡蛋。【第三次称重】


3)如果(6,7,8)<(9,10,11),与2)使用相同的方法称3次就可以得到坏鸡蛋。【第三次称重】


▼ 第二种可能:(1,2,3,4)≠(5,6,7,8)【第一次称重】

在这种情况下,说明坏鸡蛋一定在(1,2,3,4,5,6,7,8)中。

对于(1,2,3,4)>(5,6,7,8)和(1,2,3,4)<(5,6,7,8)两种情况,分析方法是类似的。

在这里以(1,2,3,4)>(5,6,7,8)为例进行分析:

此时接着称重(1,2,5)和(3,4,6)【第二次称重】


1)如果(1,2,5)=(3,4,6),说明坏鸡蛋一定在(7,8)中,而且坏鸡蛋一定比好鸡蛋轻。

接着称重(7,8),轻的就是坏鸡蛋。【第三次称重】


2)如果(1,2,5)>(3,4,6),坏鸡蛋一定在(1,2,3,4,5,6)中,再继续称(2,3,5)和(1,4,7)。【第三次称重】

① 如果(2,3,5)=(1,4,7),说明6是坏鸡蛋。

② 如果(2,3,5)>(1,4,7),

假如坏鸡蛋重,此时坏鸡蛋为(1,2,3,4)∩(1,2,5)∩(2,3,5)=2。

假如坏鸡蛋轻,此时坏鸡蛋为(5,6,7,8)∩(1,4,7)∩(3,4,6)=空集。说明坏鸡蛋一定更重,且坏鸡蛋为2。

③ 如果(2,3,5)


3)如果(1,2,5)


九、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一小时十五分钟呢? (微软的笔试题)

99.jpg

答案:


半小时:两头一起烧


一小时十五分钟:先取两根绳子,一根从一端烧,一根从两端烧,两端烧的绳子烧完时,将一端烧的绳子熄灭。这样得到半个小时的记时。将刚才熄灭的绳子两端点燃,燃尽的时间即为15分钟。再取一条两头一起烧,加起来就是一小时十五分钟。


十、2n个人排队进电影院,票价是50元。在这2n个人当中,其中n个人只有50元,另外n个人只有100元面钞。愚蠢的电影院开始卖票时1分钱也没有。问:有多少种排队方法使得每当一个拥有100元面钞的人买票时,电影院都有50元找钱?

100.jpg

答案:


本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。


如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数)


对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种排队方法有(2n)!/[(n-1)!(n+1)!]种(从2n个人中取出n-1个人的组合数)


所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。


课程预约