张三在家中遇害,侦查中发现A、B、C、D四人到过现场。

A说: '我没有杀人。' B说: 'C是凶手。' C说: '杀人者是D' D说: 'C在冤枉好人。'

查员经过判断四人中有三人说的是真话,四人中有且只有一个人是凶手,凶手到底是谁?

用VBA解决以上问题

Sub solve()
    Dim A As Boolean, B As Boolean, C As Boolean, D As Boolean
    '四个人是否说真话
    For i = 0 To 15
        A = i Mod 2
        B = i \ 2 Mod 2
        C = i \ 4 Mod 2
        D = i \ 8 Mod 2
        '判断三个人说真话
        If A + B + C + D = 3 Then
            '判断凶手
            If A = False And B = True And C = False And D = False Then
                MsgBox "凶手是C"
                Exit Sub
            ElseIf A = False And B = False And C = True And D = False Then
                MsgBox "凶手是D"
                Exit Sub
            ElseIf A = True And B = False And C = False And D = False Then
                MsgBox "凶手是B"
                Exit Sub
            ElseIf A = False And B = False And C = False And D = True Then
                MsgBox "凶手是A"
                Exit Sub
            End If
        End If
    Next i
End Sub

代码解析:

  1. 使用循环遍历所有可能的真假情况,共16种(2^4)。
  2. 使用布尔变量A、B、C、D分别代表四个人是否说真话,通过位运算进行判断。
  3. 判断条件:三个人说真话,且只有一个凶手,找到符合条件的情况即为凶手。

最终结果:凶手是C。

逻辑推理题:谁是凶手?VBA代码解析

原文地址: https://www.cveoy.top/t/topic/nV02 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录