分析一下這個題,一.產生K個不相等的整數。二.排序,找出其中最大的。三.顯示。具體來講呢主要要注意這麼幾個問題,1.產生隨機數,定義數組,依次產生每個數。2.處理不重複問題,首先你要膽兒大,假設數組產生的第一個數就是最大的,然後依靠迴圈挨個和之後的數組中的每個數比較,得出最大的數。比較過程中,就會出現兩種情況,一是沒有出現重複的,儲存這個數,繼續順利地進行比較,得出結果,二是出現了重複的,那就得廢掉這個數,重新產生一個,儲存新產生的不重複的數,然後繼續進行。值得一提的是這裡會有一個標杆(flag),來告訴你重複了怎麼辦,不重複怎麼辦,這個是很重要的。
代碼如下:
Dim a() As Long
Private Sub Form_Click()
Dim k As Integer, m As Integer, n As Integer
k = Val(InputBox("請輸入k")) ’產生K個整數
m = Val(InputBox("請輸入m")) ‘整數的範圍,m為下界
n = Val(InputBox("請輸入n")) ’n為上界
ReDim a(k - 1)
temp = Int(m + (n - m + 1) * Rnd()) ‘隨機產生一個數,並賦給了數組的第一個數a(0)
c= temp
a(0) = c
Print a(0)
'處理第二個以後可能重複的數
For i = 1 To k - 1
c = Int(m + (n - m + 1) * Rnd())
flag = 1 '假設不重複 這裡的flag就是重要的標杆!
For t = 0 To i - 1 ’這裡之前得出的最大數和到現在為止產生的i個數比較
If c = a(t) Then
i = i - 1 '廢掉這個數,重新產生一個數
flag = 0
Exit For
End If
Next t
If flag = 1 Then '不重複的數,儲存到數組中
a(i) = c
Print c ‘顯示在螢幕上
End If
Next i
End Sub