日本某地发生一件凶杀案,经常通过排查确定杀人凶手必为4个嫌疑犯的1个。
一下为4个嫌疑犯的供词:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。
已知3个人说了真话,1个人说的是假话。
请根据这些信息,写一个程序来确定到底谁是凶手?
要解决这个问题,先要画图分析:
由分析结果来编写程序:
#include<stdio.h>
int main()
{
char k = 0; // 设定k是凶手
for (k = 'A'; k <= 'D'; k++)
{
//printf("%c\n", k);
//如果((k不是A)+(k是C)+(k是D)+(k不是D)的结果等于3)----就是三个真话,一个假话
if (((k != 'A') + (k == 'C') + (k == 'D') + (k != 'D')) == 3)
{
printf("凶手是:%c\n", k); // 满足条件的k就是凶手了
}
}
return 0;
}
下面是运行结果: