当前位置: 首页 > news >正文

【C语言逻辑题】谋杀案凶手是谁?——经典矛盾推理题详解

一、题目背景

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

以下为4个嫌疑犯的供词:

  • A说:不是我。
  • B说:是C。
  • C说:是D。
  • D说:C在胡说。

已知3个人说了真话,1个人说的是假话,请根据这些信息,确定谁是凶手。

──────────────────────────────────────────────────

二、手算推理:利用矛盾关系快速锁定凶手

1. 核心矛盾点

C说"凶手是D",D说"C在胡说"(即"凶手不是D"),这两人的证词完全矛盾,必然一真一假。

2. 锁定假话者

题目中明确只有1个人说假话,因此假话必然在C和D之间,剩下的A和B说的一定是真话。

3. 推导结论

  • A说"不是我"为真 → 凶手不是A。
  • B说"是C"为真 → 凶手就是C。

4. 验证结果

此时四人的真假情况:

  • A:真
  • B:真
  • C:假(凶手不是D)
  • D:真(C确实在胡说)

✅ 完全符合"3真1假"的条件,推理成立。

──────────────────────────────────────────────────

三、C语言暴力枚举解法(适合新手理解)

思路说明

枚举A、B、C、D四人,依次假设他们是凶手,统计此时真话的数量,找到满足"3真1假"的那个。

完整代码

#include <stdio.h>

int main()
{
char killer; // 凶手变量,枚举A~D

// 依次假设A、B、C、D是凶手
for (killer = 'A'; killer <= 'D'; killer++)
{
int truth_count = 0; // 统计真话数量

// 1. A说:不是我
if (killer != 'A')
truth_count++;

// 2. B说:是C
if (killer == 'C')
truth_count++;

// 3. C说:是D
if (killer == 'D')
truth_count++;

// 4. D说:C在胡说(即凶手不是D)
if (killer != 'D')
truth_count++;

// 找到真话数为3的情况,输出凶手
if (truth_count == 3)
{
printf("凶手是:%c\n", killer);
break;
}
}

return 0;
}

运行结果

凶手是:C

──────────────────────────────────────────────────

四、代码逐行解析

代码片段

功能说明

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

循环枚举4个嫌疑犯,每次假设一人是凶手

if (killer != 'A') truth_count++;

验证A的证词是否为真,是则真话数+1

if (killer == 'C') truth_count++;

验证B的证词是否为真,是则真话数+1

if (killer == 'D') truth_count++;

验证C的证词是否为真,是则真话数+1

if (killer != 'D') truth_count++;

验证D的证词是否为真,是则真话数+1

if (truth_count == 3)

找到满足"3真1假"的凶手,输出结果

──────────────────────────────────────────────────

五、拓展与总结

1. 解题技巧:遇到矛盾关系的证词,优先用"矛盾法"缩小范围,比暴力枚举效率更高。

2. 编程思路:把逻辑题转化为代码的核心,就是将自然语言的证词转化为可计算的布尔表达式。

3. 易错点提醒:暴力枚举时,要确保覆盖所有可能的凶手,避免遗漏或逻辑错误。

http://www.jsqmd.com/news/754159/

相关文章:

  • 神经网络在三轴燃气轮机建模仿真和故障诊断中的应用特性曲线预测【附代码】
  • 2025最权威的降AI率神器横评
  • 基于Whisper、Llama与Kokoro的本地实时语音对话机器人构建指南
  • AHK2_Lib:让AutoHotkey V2从脚本工具蜕变为专业开发平台
  • 用STM32CubeMX快速配置BH1750光照传感器,OLED实时显示并串口打印数据(附完整工程)
  • ESP32-C3硬件I2C不够用?手把手教你用SlowSoftWire库扩展软件I2C(以VL53L0X为例)
  • Scrcpy Mask实用指南:专业级安卓设备投屏与键盘映射解决方案
  • 如何免费解锁百度网盘SVIP高速下载:macOS用户终极指南
  • 分层奖励机制在空间智能模型中的应用与实践
  • 26ai OGG 微服务高可用部署及切换
  • 贵阳本地GEO首选贵阳伍子柒网络,懂贵阳市场,适配本地企业推广需求
  • Python 的 Pandas
  • 保姆级教程:在STM32G4上通过串口搞定FreeMASTER数据可视化(附源码)
  • 从GEE下载TFRecord分片文件到本地训练?这份TensorFlow数据管道构建指南请收好
  • Steam Deck控制器Windows适配终极指南:5分钟让游戏手柄完美兼容
  • Godot 4集成Lua:从脚本语言到嵌入式运行时的完整指南
  • 开发者技能树知识库:结构化学习路径与社区共建指南
  • 手把手教你玩转Codesys定时器:TON、TOF、TP、RTC功能块实战配置
  • Flutter for OpenHarmony 智能备忘录笔记APP 实战DAY3:新增笔记页面跳转+编辑表单布局+笔记本地持久化保存
  • 慧知开源虚拟电厂(VPP)核心平台PRD需求文档(大白话与专业结合版)- 慧知开源充电桩平台
  • 52.YOLOv8 口罩检测全流程:Labelme 标注 + 训练部署 + 源码可直接运行
  • 如何在 NestJS 中配置全局异常过滤器捕获异步拒绝错误
  • Merkle 树的认证路径
  • 2026年5月值得信赖的河北太行金景墙源头厂家有哪些厂家推荐榜,太行金景墙、柏坡黄景墙、中国黑景墙、干垒石墙、石皮地铺石厂家选择指南 - 海棠依旧大
  • 面试官最爱问的堆排序(Heap Sort)优化技巧与常见‘坑点’,我用Python和Go都实现了一遍
  • 计算 FORS 签名
  • C++ DoIP通信异常排查实战(车载以太网调试黑盒解密)
  • 实测有效!.NET 8项目里用Spire.Office最新版去水印的完整流程(附代码)
  • 2026年5月评价高的白洋淀整院出租排行榜厂家推荐榜,家庭出游型/团队型/含餐型/整院型厂家选择指南 - 海棠依旧大
  • 2026年5月热门的防水光伏板厂家排行榜厂家推荐榜,单晶高效防水光伏板/双面双玻防水光伏板/分布式防水光伏板/储能配套防水光伏板厂家选择指南 - 海棠依旧大