甲、乙、丙、丁4个嫌疑人,只有1人为偷盗者。在审讯中,四人诚实或说谎都有可能。 
    甲:乙没偷,丁偷的; 
    乙:我没偷,丙偷的; 
    丙:甲没偷,乙偷的; 
    丁:我没偷。 
    请推断实际的偷盗者。
用VB怎么做

解决方案 »

  1.   

    如果不用VB,楼主你会做么?
    我想知道你的思路。
    剩下来的,就可以交给VB了。
      

  2.   

    抛砖引玉:Option ExplicitPrivate Sub Form_Click()
    '  甲:乙没偷,丁偷的;
    '  乙:我没偷,丙偷的;
    '  丙:甲没偷,乙偷的;
    '  丁: 我没偷
    Dim i(3) As Boolean, n As Byte, m As Byte, k As Boolean, s As String
    Me.Caption = ""
    For n = 0 To 3
        i(n) = True
        For m = 0 To 3
            If m <> n Then i(m) = False '初始条件:只有一个小偷
        Next
            If i(0) = True Then i(1) = False Else i(1) = True '  丙:甲没偷,乙偷的;
            If i(1) = False Then i(3) = True Else i(3) = False '  甲:乙没偷,丁偷的;
            If i(1) = True Then i(2) = False Else i(2) = True '  乙:我没偷,丙偷的;
            '  丁: 我没偷      丁的话没有任何意义.
        k = False
        For m = 0 To 3
            If k = True And i(m) = True Then GoTo Nex '有1个以上的小偷,结论作废
            If i(m) = True Then k = True
        Next
        For m = 0 To 3
            If i(m) = True Then
                Select Case m
                    Case 0
                        s = "甲可能是小偷"
                    Case 1
                        s = "乙可能是小偷"
                    Case 2
                        s = "丙可能是小偷"
                    Case 3
                        s = "丙可能是小偷"
                 End Select
                 If Me.Caption <> s Then Me.Caption = Me.Caption & s Else Me.Caption = s
            End If
        Next
    Nex: NextEnd Sub
      

  3.   

    6楼丢了?
    重发一次,抛砖引玉,看还其他跟好的办法没有.Option ExplicitPrivate Sub Form_Click()
    '  甲:乙没偷,丁偷的;
    '  乙:我没偷,丙偷的;
    '  丙:甲没偷,乙偷的;
    '  丁: 我没偷
    Dim i(3) As Boolean, n As Byte, m As Byte, k As Boolean, s As String
    Me.Caption = ""
    For n = 0 To 3
        i(n) = True
        For m = 0 To 3
            If m <> n Then i(m) = False '初始条件:只有一个小偷
        Next
            If i(0) = True Then i(1) = False Else i(1) = True '  丙:甲没偷,乙偷的;
            If i(1) = False Then i(3) = True Else i(3) = False '  甲:乙没偷,丁偷的;
            If i(1) = True Then i(2) = False Else i(2) = True '  乙:我没偷,丙偷的;
            '  丁: 我没偷      丁的话没有任何意义.
        k = False
        For m = 0 To 3
            If k = True And i(m) = True Then GoTo Nex '有1个以上的小偷,结论作废
            If i(m) = True Then k = True
        Next
        For m = 0 To 3
            If i(m) = True Then
                Select Case m
                    Case 0
                        s = "甲可能是小偷"
                    Case 1
                        s = "乙可能是小偷"
                    Case 2
                        s = "丙可能是小偷"
                    Case 3
                        s = "丙可能是小偷"
                 End Select
                 If Me.Caption <> s Then Me.Caption = Me.Caption & s Else Me.Caption = s
            End If
        Next
    Nex: NextEnd Sub