早教吧 育儿知识 作业答案 考试题库 百科 知识分享

请问这个VB代码如何理解?求具体每一步骤的解释.9.本程序的功能是查找一组数据中的众数.所谓众数,就是在这组数据中出现次数最多的数.注意:一组数据中的众数可能有多个.(即有多个数据的

题目详情
请问这个VB代码如何理解?求具体每一步骤的解释.
9.本程序的功能是查找一组数据中的众数.所谓众数,就是在这组数据中出现次数最多的数.注意:一组数据中的众数可能有多个.(即有多个数据的出现次数相同).事件过程Cmdfind主要功能是生成n个随机整数存入数组,再调用Freq过程,求出数组中每个不相同的数据出现的次数:再求出其中最大的出现次数值,最后,将求出相应的众数输出.请完善本
程序.
Option Explicit
Option Base 1
Private Sub Cmdfind_Click()
Dim a() As Integer,n As Integer,i As Integer
Dim Shu() As Integer,Cs() As Integer,Max As Integer
n=InputBox("输入数据个数:","查找众数",20)
ReDim a(n)
Randomize
For i=1 To n
a(i)=Int(Rnd*5)+5
Text1=Text1 & Str(a(i))
If i Mod 10=0 Then Text1=Text1 & vbCrLf
Next i
Call Freq(a,Shu,Cs)
Max=Cs(1)
For i=2 To UBound(Cs)
If Cs(i)>Max Then
___(26)___
End If
Next i
For i=1 To UBound(Cs)
If ___(27)___ Then Text2=Text2 & Shu(i) & " "
Next i
End Sub
Private Sub Freq(a() As Integer,Shu() As Integer,Cs() As Integer)
'shu数组用于存放A数组中不相同数据的值
'Cs数组用于存放对应不相同数据出现的次数
Dim i As Integer,j As Integer,js As Integer,n As Integer
For i=1 To UBound(a)
js=1
For j=1 To n '搜索数组a中不相同的数据
If Shu(j)=a(i) Then Exit For
Next j
If ___(28)___ Then
n=n+1
ReDim ___(29)___
Shu(n)=a(i)
For j=i+1 To UBound(a)
If a(j)=a(i) Then ___(30)___
Next j
Cs(n)=js
List1.AddItem a(i) & "---" & js
End If
Next i
End Sub
这个代码说在TEXT1框中随机输入20个 9之间的随机数形成一个数组,然后统计每个数字出现的个数并放在列表框中,最后找出出现个数最多的两个数字,放在TEXT2里面.
里面自定义过程中,又重新DIm n As Ingeter那么这个n就和之前过程的n不一样了吧?
▼优质解答
答案和解析
你的要求 “最后找出出现个数最多的两个数字,放在TEXT2里面.” 我办不到.
实在尽力了,只能找出最大的,答案如下
26.Max = Cs(i)
27.Cs(i) = Max
28.j = n + 1
29.Preserve Shu(n), Cs(n)
30.js = js + 1
这里我给出大致的解析,有不懂的再问我吧,对了,顺便把你的答案公布下吧,希望看到答案的说
代码
Option Explicit

Option Base 1

Private Sub Cmdfind_Click()

Dim a() As Integer, n As Integer, i As Integer

Dim Shu() As Integer, Cs() As Integer, Max As Integer

n = InputBox("输入数据个数:", "查找众数", 20)

ReDim a(n)

Randomize

For i = 1 To n '为数组a赋值

a(i) = Int(Rnd * 5) + 5

Text1 = Text1 & Str(a(i))

If i Mod 10 = 0 Then Text1 = Text1 & vbCrLf

Next i

Call Freq(a, Shu, Cs) '调用过程,获取不同的数值(shu)和相应的个数(Cs)

Max = Cs(1)

For i = 2 To UBound(Cs)

If Cs(i) > Max Then '用if语句获取最大的数值的个数

Max = Cs(i)

End If

Next i

For i = 1 To UBound(Cs) '用于查找对应的众数,并传递给Text2

If Cs(i) = Max Then Text2 = Text2 & Shu(i) & " " '

Next i

End Sub

Private Sub Freq(a() As Integer, Shu() As Integer, Cs() As Integer)

'shu数组用于存放A数组中不相同数据的值

'Cs数组用于存放对应不相同数据出现的次数

Dim i As Integer, j As Integer, js As Integer, n As Integer

For i = 1 To UBound(a)

js = 1

For j = 1 To n '依次用数组shu中的元素与a(i)比较

If Shu(j) = a(i) Then Exit For

Next j

If j = n + 1 Then 'j=n+1,说明为a(i)为新的值,计入"shu"中,并接着统计次数,加入List1

n = n + 1

ReDim Preserve Shu(n), Cs(n) '重新定义数组大小

Shu(n) = a(i) '把a(i)的数据赋值给数组shu

For j = i + 1 To UBound(a) '用For语句获取新值shu(n)在数组a中出现的次数(频数)

If a(j) = a(i) Then js = js + 1

Next j

Cs(n) = js '把shu(n)频数赋值给相应的CS(n)

List1.AddItem a(i) & "---" & js

End If

Next i

End Sub
本人能力有限,希望对你有帮助~~
看了请问这个VB代码如何理解?求具...的网友还看了以下: