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

2022年10月14日13:48:46 科技 1515

算法练习要实现的目标

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

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

3.要求数字不重复

4.按照从小到大排序

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

最终实现的效果


主要应用技术:

1.ForNext防止重复

2.冒泡算法排序

练习步骤

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

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

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

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


步骤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

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

完整代码

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


.

科技分类资讯推荐

大爷写《我的母亲》火爆全网!视频发布者最新发声 - 天天要闻

大爷写《我的母亲》火爆全网!视频发布者最新发声

连日来,一段关于大爷挑战写作1957年高考同题作文《我的母亲》的视频火爆全网。不少网民表示,文字质朴,催人泪下,深深被打动。7月11日,大皖新闻记者联系上了视频发布者连文杰。对方表示,视频中展示的作文内容由大爷独立写作,产生的版权收入也全给大爷。大爷写作文视频走红网络。大爷写的作文在网上爆火大皖新闻记者注...
10.38万元起,吉利银河A7发布预售价 - 天天要闻

10.38万元起,吉利银河A7发布预售价

7月11日,吉利银河发布了预售价,预售价格范围为10.38-13.38万元,在发布预售价格的同时,官方也带来了多项权益,包括500元订金抵扣1500元,赠送价值8800元的Flyme Sound音响等。
“中欣卡”突然停摆,超150万用户退款难 - 天天要闻

“中欣卡”突然停摆,超150万用户退款难

覆盖北京2000多家门店、拥有超150万持卡用户的预付卡“中欣卡”近日停摆,线上线下消费渠道均被暂停,恢复时间未知。大量持卡用户面临资金冻结困境。消费渠道全面“瘫痪”近日,中欣卡发布公告称“因业务调整,全面暂停所有门店合作,无法消费”。中国新闻网《民生调查局》记者发现,其官网合作商户名录已清空,线上提货渠...
突发,聊聊Manus“删博跑路” - 天天要闻

突发,聊聊Manus“删博跑路”

摘要:“如果最后有不错的结果,证明作为中国出生的创始人,也能在新的环境下做好全球化的产品,那就太好了”凤凰网科技 出品作者|董雨晴7月11日,AI Agent产品Manus官方账号清空了发布在微博、小红书的内容。两天前,Manus刚刚陷入裁
AI取代硅谷程序员?这些美国大厂高管这么说 - 天天要闻

AI取代硅谷程序员?这些美国大厂高管这么说

人工智能(AI)正在加速重塑全球劳动力市场。 当地时间10日,美国招聘平台Indeed及员工评价网站Glassdoor宣布,为应对人工智能带来的产业变革,将裁减约1300个职位,占集团员工总数的6%。微软首席商业官阿尔索夫(Judson Althoff)称,AI已承担35%的产品代码编写工作,显著加快了产品开发周期。 美国威达信集团(Marsh McL...