#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的值为凶手。
该篇博客通过编程解决了一道逻辑推理题。题目涉及四个人A、B、C、D,其中三个人说真话,一个人说假话。通过分析每个人的陈述,判断谁是凶手。最终,代码逻辑指出,当杀手是C时,条件满足,因此得出结论:凶手是C。
766

被折叠的 条评论
为什么被折叠?



