天天看点

两个多位数相乘

代码:

Option Base 1

Private Sub Command1_Click()

    Dim M As String

    Dim N As String

    M = Trim(Text1.Text)

    N = Trim(Text2.Text)

    Dim Number1() As Byte

    Dim Number2() As Byte

    ReDim Number1(Len(M))

    ReDim Number2(Len(N))

    Dim index As Byte

    For index = 1 To Len(M) Step 1

        Number1(index) = Mid(M, index, 1)

    Next index

    For index = 1 To Len(N) Step 1

        Number2(index) = Mid(N, index, 1)

    Next index

  Dim Result() As Byte

  ReDim Result(Len(M) + Len(N))

  Dim MCarry As Byte

  Dim ACarry As Byte

  Dim Remainder As Integer

  Dim i As Integer, j As Integer

  Dim Mtemp As Integer, Atemp As Integer

  For i = Len(N) To 1 Step -1

    For j = Len(M) To 1 Step -1

        Mtemp = Number1(j) * Number2(i) + MCarry

        MCarry = Mtemp \ 10

        Remainder = Mtemp Mod 10

        Atemp = Remainder + Result(i + j) + ACarry

        ACarry = Atemp \ 10

        Result(i + j) = Atemp Mod 10

    Next j

    Result(i) = MCarry + ACarry

    MCarry = 0

    ACarry = 0

  Next i

  Dim Mstr  As String

  For index = 1 To Len(N) + Len(M)

    Mstr = Mstr & Str(Result(index))

  Next

  Label3.Caption = Mstr

end sub

心得体会:开始计算较小两个数还可以,较大的数时自己以前的程序就不行了。上课时老师为我们讲的思想虽然很明白,可是落实的时候却出现了很多问题,不得不从别人那考了现成的自己体会,不过后来还是明白了。