日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
这个题和我前面做的一个判断比赛选手名次那个题很是类似,只不过改了出题方式,具体思路如下:
四个人中有一个讲了假话,别的都是真话,c中假为0,真为非0,一般用1表示,那么这样想就很快有思路了,四个人的真假相加为3,
代码逻辑为
if (((k != 'A') + (k == 'C') + (k == 'D') + (k != 'D'))==3),用一个for循环就可以了。
#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("凶手是:%c\n", k);
return 0;
}
}
return 0;
}