杀人猜测游戏

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4 个嫌疑人中的一个。一下为4个嫌疑犯的供词

     A说:不是我

   B说:是C

   C说:是D

   D说:C在说胡话

已知四个人中有有三个人说了真话,一个人说了假话,请问谁是杀人者?

要解决这类问题,必须先假设谁是杀人者,以下分四种情况讨论

  1.若A是杀人者,则A说的是假话,B说的是假话,C说的是假话,D说的是真话,不满足3 真1假  NO

  2.若B是杀人者,则A说的是真话,B说的是假话,C说的是假话,D说的是真话,不满足3真1假 NO

  3.若C是杀人者,则A说的是真话,B说的是真话,C说的是假话,D说的是真话,满足3真1假     YES

  4.若D是杀人者,则A说的是真话,B说的是假话,C说的是真话,D说的是假话,不满足3 真1假   NO

         知杀人者是C

在用C语言实现时要控制循环的次数,当执行一次循环时就判断一次结果,在最后用一个计数器记录说真话的人数,如果等于3说明该人是杀人凶手。

代码实现


  

#include

#include

int main()

{

char killer;

int a=0;

int b=0;

int c=0;

int d=0;

int count=0;

for(killer='A';killer<='D';killer++)

{

a=(killer!='A');

b=(killer=='C');

c=(killer=='D');

d=(killer!='D');

count=a+b+c+d;   //记录说真话人的个数

if(count == 3)

{

printf("杀人的是:%c\n",killer);break;

}

}

system("pause");

return 0;

}


你可能感兴趣的:(C/C++,游戏,杀人猜测,推理)