广东智能网站建设费用,设计网站需要多少钱,创意设计活动加计扣除,软件服务商嵌入式linux面试题解析#xff08;四#xff09;——逻辑推理一1、谁是罪犯问题一位法官在审理一起盗窃案时#xff0c;对涉及到的四名嫌疑犯A、B、C、D进行了审问。四人分别供述如下#xff1a;A#xff1a;“罪犯在B、C、D三人之中。”B#xff1a;“我没有作案#x… 嵌入式linux面试题解析四——逻辑推理一1、谁是罪犯问题 一位法官在审理一起盗窃案时对涉及到的四名嫌疑犯A、B、C、D进行了审问。四人分别供述如下 A“罪犯在B、C、D三人之中。” B“我没有作案是C偷的。” C“在A和D中间有一个是罪犯。” D“B说的是事实” 经过充分的调查证实四人中只有两人说了真话并且罪犯只有一个。请确定真正的罪犯。解答 #include stdio.hint 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\n, killer);}}return 0;}输出结果killer is D2、小狗、小兔、小猫、小猴和小鹿参加百米赛跑比赛结束后 小猴说“我比小猫跑得快。” 小狗说“小鹿在我的前面冲过了终点线。” 小兔说“我的名次排在小猴的前面小狗的后面。” 请根据他们的回答排出名次。解答#include stdio.hint main(int argc, char **argv)
{//小狗、小兔、小猫、小猴、小鹿分别定义为a,b,c,d,eunsigned 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\n, a);printf(小兔 :%d\n, b);printf(小猫 :%d\n, c);printf(小猴 :%d\n, d);printf(小鹿 :%d\n, e);}}}}}return 0;
}输出结果小狗 :2小兔 :3小猫 :5小猴 :4小鹿 :13、甲、乙、丙、丁四人参加一次数学竞赛。赛后他们四人预测名次的谈话如下: 甲说“丙得第一我第三名” 乙说“我第一名丁第四名” 丙说“丁第二名我第三名” 丁没说话。 当最后结果公布时发现甲乙丙都只说对了一半请给出正确的四人名次。解答#include stdio.hint main(int argc, char **argv)
{//甲乙丙丁分别为a,b,c,dunsigned 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\n, a);printf(b is %d\n, b);printf(c is %d\n, c);printf(d is %d\n, d);}}}}}}return 0;
}输出结果a is 3b is 1c is 4d is 2逻辑推理题的解题思路一般采用多重循环穷举所有的可能情况将给出的条件转换为C语言中的逻辑判断表达式打印出符合条件的选项。 转载于:https://blog.51cto.com/9291927/1830485