#include<stdio.h>
int main()
{
int killer = 0;
for (killer = 'a'; killer <= 'd';killer++)
{
if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
{
printf("凶手是:%c", killer);
}
}
return 0;
}
只有3个人说真话 1个人说假话
A;不是我 B:是C C:是D D:C在胡说
依次假设A,B,C,D是凶手,例如先假设A是凶手,则A说的是假话,B说的是假话,C说的是假话,D说的是真话。 所以总共是3个人说假话,1个人说真话 不符合
假设B是凶手,则A说的是真话,B说的是假话,C说的是假话,D说的是真话。 所以总共是2个人说假话,2个人说真话 不符合
假设C是凶手,则A说的是真话,B说的是真话,C说的是假话,D说的是真话。 所以总共是1个人说假话,3个人说真话 符合
假设D是凶手,则A说的是真话,B说的是假话,C说的是真话,D说的是假话。 所以总共是2个人说假话,2个人说真话 不符合
编程实现:
创建变量killer (凶手)
建立个循环,以killer为A开始依次比对4个条件,若不满足3个为真则,A++,设B为凶手,再比对4个条件,直至满足3个为真,则那时killer的值为凶手。