要求:     1.  程序运行时,首先随机产生30个100以内不重复的二位数,并显示在List1中。 
    2.  单击“判断”按钮,选出个位与十位之和为偶数的数据,显示在List2中。 
    3.  单击“排序”按钮时,将选出的数据按从小到大的顺序排序,重新显示在List2中 
    4.  单击“存盘”按钮时,将排序后的筛选数据写入文件“Test32Out.txt”中。 Dim a(30),a() Private Sub Command1_Click() 
ReDim a(n) 
For i = 1 To n 
n = 0 
If (x \ 10 + x Mod 10) Mod 2 = 0 Then 
    x = a(i) 
    n = n + 1 
End If Next i For i = 1 To n 
    List2.AddItem a(i) 
Next i 
End Sub Private Sub Command2_Click() 
For i = 1 To n - 1 
  For j = i + 1 To n 
  If a(i) > a(j) Then 
    t = a(i) 
    a(i) = a(j) 
    a(j) = t 
  End If 
  Next j 
Next i 
For i = 1 To n 
  List2.AddItem a(i) 
Next i 
End Sub Private Sub Command3_Click() 
Open "test32out.txt" For Output As #1 
    For i = 1 To n 
      Print #1, a(i) 
    Next i 
Close #1 
End Sub Private Sub Form_Load() 
For i = 1 To 30 
a(i) = Int(Rnd * 91 + 10) 
  
  List1.AddItem a(i) 
Next i 
End Sub

解决方案 »

  1.   

    你运行是显示的错误是啥?
    Dim a(30),a()  “定义有二义性"
    是这个错误吗
      

  2.   

    Dim a(29)
    Private Sub Form_Load()
    Dim i, b As Integer
    Dim c As Boolean
    a(0) = Int(Rnd * 91 + 10)
    Do While i < 30
    b = Int(Rnd * 91 + 10)
    c = XX(b)
    If c = False Then
    List1.AddItem b
    i = i + 1
    End If
    Loop
    End Sub
    Private Function XX(S As Integer) As Boolean
    Dim k, i As Integer
    k = 0
    For i = 0 To List1.ListCount - 1
    If S = Val(List1.List(i)) Then
    k = 1
    End If
    Next i
    If k > 0 Then
     XX = True
     Else
     XX = False
    End If
    End Function
    Private Sub Command1_Click() '筛选
    For i = 1 To List1.ListCount - 1
    x = Int(Val(List1.List(i)) \ 10)
    y = Val(List1.List(i)) Mod 10
    If (x + y) Mod 2 = 0 Then
        List2.AddItem List1.List(i)
        End If
    Next i
    End SubPrivate Sub Command2_Click() '冒泡排序---升序
    Dim Arr()
    For i = 0 To List2.ListCount - 1
    ReDim Preserve Arr(i)
    Arr(i) = List2.List(i)
    NextFor i = 0 To UBound(Arr) - 1
    For j = i + 1 To UBound(Arr)
    a1 = Arr(i)
    b1 = Arr(j)
    If Arr(i) > Arr(j) Then
     Arr(i) = b1
     Arr(j) = a1
    End If
    Next j
    Next i
    List2.Clear
    For i = 0 To UBound(Arr)
    List2.AddItem Arr(i)
    Next
    End Sub
    Private Sub Command3_Click() '输出
    S1 = ""
    For i = 0 To List2.ListCount - 1
          S1 = S1 & List2.List(i) & vbCrLf
        Next i
    Open App.Path & "\" & "test32out.txt" For Output As #1
     Print #1, S1
    Close #1
    End Sub
      

  3.   

    你的错误很多,做了较大的修改,虽然不是最优的,但正确了Option Explicit
    Dim a() As IntegerPrivate Sub Command1_Click()
    Dim t As Integer, i As Integer
      For i = 1 To UBound(a)
        t = a(i)
        If (t \ 10 + t Mod 10) Mod 2 = 0 Then List2.AddItem a(i)
      Next i
      ReDim a(List2.ListCount)
      For i = 1 To UBound(a)
        a(i) = CInt(List2.List(i - 1))
      Next
      
    End SubPrivate Sub Command2_Click()
    Dim t As Integer, i As Integer, j As Integer
      For i = 1 To UBound(a) - 1
        For j = i + 1 To UBound(a)
          If a(i) > a(j) Then
            t = a(i)
            a(i) = a(j)
            a(j) = t
          End If
        Next j
      Next i  List2.Clear
      For i = 1 To UBound(a)
        List2.AddItem a(i)
      Next i
    End SubPrivate Sub Command3_Click()
    Open "d:\test32out.txt" For Output As #1
        For i = 1 To n
          Print #1, b(i)
        Next i
    Close #1
    End SubPrivate Sub Form_Load()
    Dim t As Integer, i As Integer, k As Integer
      k = 1
      Do
        ReDim Preserve a(k)
        t = Int(Rnd * 91 + 10)
        For i = 1 To UBound(a)
          If t = a(i) Then Exit For
        Next i
        If i > UBound(a) Then
          a(k) = t
          List1.AddItem a(k)
          k = k + 1
        End If
      Loop Until k > 30
    End Sub
      

  4.   


    Option Explicit
    Dim a() As IntegerPrivate Sub Command1_Click()
    Dim t As Integer, i As Integer
      For i = 1 To UBound(a)
        t = a(i)
        If (t \ 10 + t Mod 10) Mod 2 = 0 Then List2.AddItem a(i)  '将满足偶数要求的数放入List2
      Next i
      ReDim a(List2.ListCount)     '清除a数组的内容,且缩小a数组与List2的长度相同
      For i = 1 To UBound(a)       
        a(i) = CInt(List2.List(i - 1))  '将List2的内容拷贝到a数组
      Next
      
    End SubPrivate Sub Command2_Click()              '排序方法照抄你原来的
    Dim t As Integer, i As Integer, j As Integer
      For i = 1 To UBound(a) - 1
        For j = i + 1 To UBound(a)
          If a(i) > a(j) Then
            t = a(i)
            a(i) = a(j)
            a(j) = t
          End If
        Next j
      Next i  List2.Clear         '清除List2的内容                   
      For i = 1 To UBound(a)  '把数组a(已经排序的内容)拷贝到List2
        List2.AddItem a(i)
      Next i
    End SubPrivate Sub Command3_Click()    '这段程序照搬你的
    Open "d:\test32out.txt" For Output As #1
        For i = 1 To n
          Print #1, a(i)
        Next i
    Close #1
    End SubPrivate Sub Form_Load()       '生成30个随机数,要求不同样,你原来做不到,现在做到了
    Dim t As Integer, i As Integer, k As Integer
      k = 1
      Do
        ReDim Preserve a(k)         
        t = Int(Rnd * 91 + 10)
        For i = 1 To UBound(a)
          If t = a(i) Then Exit For  '每生成一个新数,都要与数组中已经有的数进行比较
        Next i
        If i > UBound(a) Then        ' i > UBound(a) 说明没有相同的数,可以存入数组
          a(k) = t
          List1.AddItem a(k)
          k = k + 1
        End If
      Loop Until k > 30
    End Sub