命案抓住了六个嫌疑犯,他们的口供如下:
A:我不是罪犯
B:A、C中有一个是罪犯
C:A和B说了假话
D:C和F说了假话
E:其他五个人中,只有A和D说了真话
F:我是罪犯
他们中只有一半说了真话,凶手只有一个。
本题答案不唯一,请编程找出所有可能的凶手。并按A-F的顺序逐行输出。
需要注意的是,由于输出要从A-F的顺序输出,而只有字母为1时才会被当作犯人输出,因此写for循环的时候要注意位置,使得最先遍历A==1的情况。
类似的逻辑推理应用题还有很多。如果最终的答案只有一个,那么在找到答案时就使用“break”提前结束当前循环(上一层循环仍继续),因此如果是多重循环则无法完全退出。可以先指定一个变量“bool found = false”,一旦找到答案就会变成 found==true,然后就无法进行下一个循环: