逻辑推理题:谁是凶手?VBA代码解析
张三在家中遇害,侦查中发现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
代码解析:
- 使用循环遍历所有可能的真假情况,共16种(2^4)。
- 使用布尔变量A、B、C、D分别代表四个人是否说真话,通过位运算进行判断。
- 判断条件:三个人说真话,且只有一个凶手,找到符合条件的情况即为凶手。
最终结果:凶手是C。
原文地址: https://www.cveoy.top/t/topic/nV02 著作权归作者所有。请勿转载和采集!