题目名称:猜凶手
题目内容:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手
我们先理论分析一下:
//假设A是凶手,则B C D都说了假话,故A不可能是凶手
//假设B是凶手,则C D都说了假话
//假设C是凶手,合理
//假设D是凶手,B C说了假话
代码实现:
#include <stdio.h> int main() { int k = 0; for(k = 'A';k<='D';k++) { if((k!='A')+(k=='C')+(k=='D')+(k!='D')==3) { printf("killer = %c\n",k); } } return 0; }
运行结果:
代码分析: