VB编程中解数学灯谜ABCD-CDC=ABC,帮我看看我哪编的不对?

2025-04-13 08:12:58
推荐回答(4个)
回答1:

Private Sub Command3_Click()
Dim a%, b%, c%, d%
For a = 0 To 9
    For b = 0 To 9
        If b <> a Then
            For c = 0 To 9
                If c <> b Then
                    For d = 0 To 9
                        If d <> c And (a * 1000 + b * 100 + c * 10 + d) - (c * 100 + d * 10 + c) = a * 100 + b * 10 + c Then
                            Print "a="; a
                            Print "b="; b
                            Print "c="; c
                            Print "d="; d
                        End If
                    Next d
                End If
            Next c
        End If
    Next b
Next a
End Sub

结果是 1 0 9 8

你的程序之所以没结果,是因为你没有把0考虑进来,同时还要考虑到abcd四个数要互相不相等的情况


补充一下,那个表达式可以简化为

If d <> c And a * 900 + b * 90 - c * 92 - d * 9 = 0 Then

这样就不会显得很长

回答2:

你的这个条件:
If (a * 1000 + b * 100 + c * 10 + d) - (c * 100 + d * 10 + c) = (a * 100 + b * 10 + c) Then
永远也不会成立,当然不会有输出了。
不然你将(a * 1000 + b * 100 + c * 10 + d) - (c * 100 + d * 10 + c)和(a * 100 + b * 10 + c)存储在一个文本文件中看看能不能相等。

回答3:

你忽略了0
1098
然后显示那块要显示在立即窗口需要把print变成Debug.Print

回答4:

FOR循环应该从0到9吧,再试试吧,除了0000,还有一个结果1098。