计算机VB 题 随机产生30个不重复的两位正整数,聪大到小排列,窗体直接显示排列前排列后的数

计算机VB 题 随机产生30个不重复的两位正整数,聪大到小排列,窗体直接显示排列前排列后的数

首先先插入两个文本框和一个命令按钮,为了清楚看出,文本框能放30个数大小足够。

Private Sub Command1_Click()

Dim a(1 To 30) As Integer, i As Integer, j As Integer, t As Integer

Text1.Text = ""

Randomize

a(1) = Int(Rnd * 90) + 1

Text1.Text = Text1.Text & a(1) & " "

For i = 2 To 30

   t = i

   Randomize

   a(i) = Int(Rnd * 90) + 1

   For j = 1 To i - 1

      If a(i) = a(j) Then

         i = t - 1

         Exit For                            '去掉重复的数

      End If

   Next j

   If i = t Then Text1.Text = Text1.Text & a(i) & " "  '在文本框1中显示排列前的随机数

Next i

For i = 1 To 29               '由大到小排列无重复的随机数

    For j = i + 1 To 30

        If a(i) < a(j) Then

           t = a(i)

            a(i) = a(j)

            a(j) = t

        End If

    Next

Next

For i = 1 To 30

    Text2.Text = Text2.Text & " " & a(i)    '在文本框2中显示排列后的随机数

Next i

End Sub

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-01
Private Sub Command1_Click()
Randomize
Dim tem As Integer, j As Integer, i As Integer
Dim a(30) As Integer, ss As String
tem = Int(90 * Rnd + 10)
a(1) = tem
For i = 2 To 30
Do
tem = Int(90 * Rnd + 10)
For j = 1 To i - 1
If a(j) = tem Then Exit For
Next
If j = i Then
a(i) = tem
Exit Do
End If
Loop
Next
'产生30个数
For i = 1 To UBound(a)
ss = ss & " " & a(i)
If i Mod 10 = 0 Then ss = ss & Chr(10) + Chr(13)
Next
Print ss
'显示数
ss = ""
For i = 1 To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(i) < a(j) Then
tem = a(i)
a(i) = a(j)
a(j) = tem
End If
Next
Next
'从大到小排列
For i = 1 To UBound(a)
ss = ss & " " & a(i)
If i Mod 10 = 0 Then ss = ss & Chr(10) + Chr(13)
Next
Print ss
'显示排列后的数
End Sub