日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include <stdio.h>
#include <windows.h>
int main()
{
char killer;
for (killer = 'A'; killer <= 'D'; killer ++) //利用'A'~'D'的ASCALL码循环四次
{
if (( (killer != 'A' ) + (killer == 'C') + (killer == 'D') + (killer != 'D') ) == 3)
{
printf("killer is %c\n",killer);
break ;
}
}
system("pause");
return 0;
}
if条件句解释:
判断A~D中的哪一位是杀手,if语语句中的条件成立三次杀手出现
例,当循环第一次时,A的ASCA赋给killer,if语句中第一个条件不
成立,第二个不成立,第三个不成立,第四个成立即 0 + 0 + 0 + 1 != 3
杀手没找到执行下一次循环, B的ASCA赋给killer继续执行if条件语
直到找出killer。