VBA编程练习:生成25个随机数并进行自动排序(基于Access)

算法练习要实现的目标

1.做1个窗体、包含两个文本框

2.在Access文本框里加入25个随机数字

3.要求数字不重复

4.按照从小到大排序

最终实现的效果


主要应用技术:

1.ForNext防止重复

2.冒泡算法排序

练习步骤

步骤1:制作输出端(窗体)

做两个文本框、两个按钮控件。一个文本框用于展示不重复的排列情况,另一个文本框用于展示有重复的情况。


步骤2:生成25个随机数(1-30),并要求不重复

代码如下

For i = 1 To 25

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

For j = 1 To i - 1 '这段是防止重复的代码

If a(i) = a(j) Then '如果重复了再次选择

i = i - 1

End If

Next j

Next i


步骤2技术要点是建立一个数组a,利用一个ForNext进行数组赋值。

难点是对25个随机数进行去重操作。方法是引入一个新变量j,每生成一个数字就跟上一个数字进行比较,如果相同就重新进行选择。利用的也是ForNext操作。


去重操作代码

For j = 1 To i - 1 '这段是防止重复的代码

If a(i) = a(j) Then '如果重复了再次选择

i = i - 1

End If

Next j


步骤3:用冒泡算法进行排序

冒泡算法的核心思想是引入一个中间变量t,不停地比较相邻的数字。冒泡算法核心思想是把大数往下压、小数往前挤出。如同气泡往前走一样。我会另外写一篇文章介绍冒泡算法,本文只做简单介绍。

代码如下:

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i) 't作为中间变量,冒泡算法常见

a(i) = a(j)

a(j) = t

End If

Next j

Next i


25个数字生成和数字排序设定在一个sub下,通过点击一次按钮即可操作


步骤4:对输入段进行分行操作

为了便于演示,25个数字要进行分行。每数到5进行一次回车。

tempStr是中间变量,用途是将数字分隔开,并逢5的倍数进行回车操作。运用If函数进行区分。

Chr(13)和Chr(10)是计算机的回车符号。


For i = 1 To 25

Text1 = Text1 + tempStr + CStr(a(i)) 'CStr转换成字符串

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " " '换行

Else

tempStr = " "

End If

Next i

完整代码

Option Compare Database

Dim i As Integer

Dim j As Integer

Dim tempStr As String '中间变量,用于数列分行

Dim a(1 To 25) As Double '数组一共25个数字

Dim t As Double '中间变量,排序用



Private Sub Command1_Click()


Text1 = ""

tempStr = " "


'下面这段是生成不重复的25个数字,从1-30的数字里选择

For i = 1 To 25

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

For j = 1 To i - 1 '这段是防止重复的代码

If a(i) = a(j) Then '如果重复了再次选择

i = i - 1

End If

Next j

Next i


'这段是排序,运用冒泡算法

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i) 't作为中间变量,冒泡算法常见

a(i) = a(j)

a(j) = t

End If

Next j

Next i


'这段是在文本框里生成25个数字

For i = 1 To 25

Text1 = Text1 + tempStr + CStr(a(i)) 'CStr转换成字符串

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " " '换行

Else

tempStr = " "

End If

Next i


End Sub


Private Sub Command2_Click()


Text2 = ""

tempStr = " "


'下面这段是生成的25个数字(有可能重复),从1-30的数字里选择

For i = 1 To 25

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

Next i


'这段是排序,运用冒泡算法

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i)

a(i) = a(j)

a(j) = t

End If

Next j

Next i


'这段是在文本框里生成25个数字

For i = 1 To 25

Text2 = Text2 + tempStr + CStr(a(i))

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " "

Else

tempStr = " "

End If

Next i

End Sub


.

举报
评论 0