1. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include<stdio.h>
int main()
{
int i,sum=0,flag=0;
char killer;
for(i=1;i<=4;i++)
{
killer = 64+i;
sum = (killer !='A')+(killer =='C')+(killer =='D') +(killer!='D');
if(sum == 3)
{
flag=1;
printf("%c is the killer.\n",killer);
break;
}
}
if(flag ==0)
printf("Can not find\n");
return 0;
}
这个题母 killer = 64,这一步很关键,这相当于把ABCD的条件和ASCII的数值对应起来了,条件有说道三个人说了真话,所以用到了sum,说的真话即为条件为真数值为1,三个人说了真话则sum为3,定义flag是为了后边判断没有找到的另一种可能