想用VB编程,帮别人做一道小学3年级的作业。1,2,3,4,5,6,7,8,9,这些数字填入下面的算式中,每个数字用一次:_ _ _ _ * _ = _ _ _ _就是  一个四位数  乘以  一个一位数  等于  另一个四位数 。用VB编程,给点思路吧。谢谢哦!

解决方案 »

  1.   

    无解?Private Sub Form_Click()
        Dim i As Long
        Dim j As Long
        Dim k As Long
        Dim m As Long
        
        Dim s As String
        
        For i = 1234 To 9876
            For j = 1 To 9
                k = i * j
                If k < 10000 Then
                    s = i & j & k
                    For m = 1 To 9
                        If InStr(1, s, Str(m), vbTextCompare) = 0 Then s = "": Exit For
                    Next
                    
                    If s <> "" Then
                        Me.Print i & " * " & j & " = " & k
                    End If
                End If
            Next
        Next
        Me.Print "== Fin =="
    End Sub
      

  2.   

    ABCD * E = FGHI
    关键找 E 的值,首先 E 不能取值 1;由于最高位 A * E 不产生进位,只能两种情况
    一、A 取值 1,下面有进位,F 比 E 大,所以 E 的取值范围为 2~8
    二、A 取值 2,E 取值 3
    三、A 取值 3,E 取值 2因为不能重复取值,确定 E 后,可以限制 D、I 的取值范围剩下5个值应该简单多了,排列组合也只有 120 种,用程序排列测试一下就可以了
      

  3.   

    Private Sub Form_Click()
        Dim i As Long
        Dim j As Long
        Dim k As Long
        Dim m As Long
        
        Dim s As String
        
        For i = 1234 To 9876
            For j = 1 To 9
                k = i * j
                If k < 10000 Then
                    s = i & j & k
                    For m = 1 To 9
                        If InStr(1, s, m, vbTextCompare) = 0 Then s = "": Exit For
                    Next
                    
                    If s <> "" Then
                        Me.Print i & " * " & j & " = " & k
                    End If
                End If
            Next
        Next
        Me.Print "== Fin =="
    End Sub
      

  4.   

    就是AprilSong(X) 兄的程序,不过AprilSong(X) 兄多此一举了。Str(m)得到一个4位长度的字符串,反而不能通过了。
      

  5.   

    时间紧最简单写一下算法,不知道对不对
    (a(1)*1000+a(2)*100+a(3)*10+a(4))*a(5)=(a(6)*1000+a(7)*100+a(8)*10+a(9)) 
    判断是否成立,不成立换位做循环,直致成立!!
      

  6.   

    samwzhang(分全给我)正解,测试结果如下:
    1738 * 4 = 6952
    1963 * 4 = 7852
    VB真是神奇啊,instr函数的String型参数居然可以用Long型
      

  7.   

    //Str(m)得到一个4位长度的字符串
    不过samwzhang(分全给我)这个说错了,得到的是两位的Dim m As Long
    m = 1
    MsgBox "|" & Str(m) & "|,长度是" & Len(Str(m))
    '| 1|,长度是2
      

  8.   

    找到了,form MSDNStr 函数返回代表一数值的 Variant (String)。说明当一数字转成字符串时,总会在前头保留一空位来表示正负。如果 number 为正,返回的字符串包含一前导空格暗示有一正号。
      

  9.   

    长知识了吧,HoHo
    知道了:
    1 Instr函数的string可以直接用整形数
    2 Str()函数转换正数为字符串前面带空格其实,用CStr就可以了,我习惯用CStr,Str没有用过,感觉还是CStr好用,CStr返回的是字符串,不象Str返回Variant