1.题目
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯
的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
2.程序代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;//定义四个参数,当做四个嫌疑犯
for (a = 0; a <= 1; a++)
{
for (b = 0; b <= 1; b++)
{
for (c = 0; c <= 1; c++)
{
for (d = 0; d <= 1; d++)//每个人都有两种可能,1为凶手,0不是,
//所以要用四个循环来排除
{
if ((((a == 0) + (c == 1) + (d == 1) + (d != 1)) == 3)&&
((a + b + c + d) == 1))//三个人有一个说谎,所以加在一起应该为3,
//而凶手只能为一个人,所以四个人加在一起为1
{
if (a == 1)
{
printf("a是凶手\n");
}
else if (b == 1)
{
printf("b是凶手\n");
}
else if (c == 1)
{
printf("c是凶手\n");
}
else
{
printf("d是凶手\n");
}
}
}
}
}
}
system("pause");
return 0;
}
3.执行结果