Private Sub Command3_Click()
Dim n As Long
Dim I As Long
Dim j As LongDim a(9) As Long
Dim t As Long
For I = 0 To 9
    a(I) = Rnd * 100
    Picture1.Print a(I);
Next I
n = UBound(a) - LBound(a) + 1
For I = 0 To n - 2  这里的两行代码应该是怎样的??
For j = 0 To n - I
If a(j) > a(j + 1) Then
    t = a(j + 1)
    a(j + 1) = a(j)
    a(j) = t
End If
Next jNext I
For I = 0 To n
Picture2.Print a(I);
Next
End Sub

解决方案 »

  1.   

    a(9)是一个9个元素的数组,
    怎么能用 for i=0 to9 赋值,赋10个元素,这样肯定越界
      

  2.   


    Private Sub Command3_Click()
        Dim n As Long
        Dim i As Long
        Dim j As Long
        Dim a(9) As Long
        Dim t As Long
        For i = 0 To 9
          a(i) = Rnd * 100
          Picture1.Print a(i);
        Next i
        n = UBound(a) - LBound(a) + 1   '这里的n表示a数组的个数,即最后一个数还加1
        For i = 0 To n - 2 '所以当你采用冒泡排序的时候,是从数组第0个,即Lbound(a)到倒数第二个,即n-2
            For j = 0 To n - i - 2  ' 冒泡时,从数组第0个,到第未排好序的倒数第二个,所以为n-i-2
                If a(j) > a(j + 1) Then
                  t = a(j + 1)
                  a(j + 1) = a(j)
                  a(j) = t
                End If
            Next j
        Next i
        For i = 0 To n - 1
            Picture2.Print a(i);
        Next i
    End Sub