嵌入式linux面试题解析(四)——逻辑推理一
2019-07-13 02:39发布
生成海报
嵌入式linux面试题解析(四)——逻辑推理一
1、谁是罪犯问题 一位法官在审理一起盗窃案时,对涉及到的四名嫌疑犯A、B、C、D进行了审问。四人分别供述如下: A:“罪犯在B、C、D三人之中。” B:“我没有作案,是C偷的。” C:“在A和D中间有一个是罪犯。” D:“B说的是事实” 经过充分的调查,证实四人中只有两人说了真话,并且罪犯只有一个。请确定真正的罪犯。解答: #include int main(int argc, char *argv[]) { //假设A是罪犯 unsigned int killer = 'A'; int flags = 0;//A、B、C、D说真话的值为1,说假话为0,四个人所说真假的和 //假设A、B、C、D都是罪犯,遍历四种可能 for(killer = 'A'; killer <= 'D'; killer++) { flags = (killer == 'B' || killer == 'C' || killer == 'D'); flags += (killer == 'C'); flags += (killer == 'A' || killer == 'D'); flags += (killer == 'C'); if(flags == 2)//A、B、C、D中有两个人说的是真话 { printf("killer is %c
", killer); } } return 0; }
输出结果:killer is D2、小狗、小兔、小猫、小猴和小鹿参加百米赛跑,比赛结束后, 小猴说:“我比小猫跑得快。” 小狗说:“小鹿在我的前面冲过了终点线。” 小兔说:“我的名次排在小猴的前面,小狗的后面。” 请根据他们的回答排出名次。解答:#include int main(int argc, char **argv){ //小狗、小兔、小猫、小猴、小鹿分别定义为a,b,c,d,e unsigned int a, b, c, d, e; for(a = 1; a <= 5; a++) { for(b = 1; b <= 5; b++) { if(a == b) continue; for(c = 1; c <= 5; c++) { if(a == c || b == c) continue; for(d = 1; d <= 5; d++) { if(a == d || b == d || c == d) continue; e = 15 -a -b -c -d; if((d < c) && (e < a) && (b < d) && (b > a)) { printf("小狗 :%d
", a); printf("小兔 :%d
", b); printf("小猫 :%d
", c); printf("小猴 :%d
", d); printf("小鹿 :%d
", e); } } } } } return 0;}
输出结果:小狗 :2小兔 :3小猫 :5小猴 :4小鹿 :13、甲、乙、丙、丁四人参加一次数学竞赛。赛后,他们四人预测名次的谈话如下: 甲说:“丙得第一,我第三名”; 乙说:“我第一名,丁第四名”; 丙说:“丁第二名,我第三名”; 丁没说话。 当最后结果公布时发现,甲乙丙都只说对了一半,请给出正确的四人名次。解答:#include int main(int argc, char **argv){ //甲乙丙丁分别为a,b,c,d unsigned int a,b,c,d; //a为1-4时 for(a = 0; a <= 4; a++) { for(b = 0; b <= 4; b++) { for(c = 0; c <= 4; c++) { for(d = 0; d <= 4; d++) { if(a + b + c + d == 10) { //a,b,c,d的值不能相同 if(a == b || a == c || a == d || b == c || b == d || c == d) continue; if(((c == 1)+(a == 3) == 1) && ((b == 1)+(d == 4) == 1) && ((d == 2)+(c == 3) == 1)) { printf("a is %d
", a); printf("b is %d
", b); printf("c is %d
", c); printf("d is %d
", d); } } } } } } return 0;}
输出结果:a is 3b is 1c is 4d is 2逻辑推理题的解题思路一般采用多重循环,穷举所有的可能情况,将给出的条件转换为C语言中的逻辑判断表达式,打印出符合条件的选项。本文出自 “
生命不息,奋斗不止” 博客,转载请与作者联系!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮