6.2.1 数组的声明
一维数组:
dim a(20) as integer
21 个元素。索引值从 0 到 20 。
dim b(1 to 15) as integer
15 个元素。索引值从 1 到 15 。
二维数组:
如 dim c(5,5) as integer
6*6 的二维数组 c 。
6.2.2 数组的使用
例 1 :随机产生 10 个两位整数,找出其最大值、最小值和平均值。
程序代码:
Dim a(1 To 10) As Integer
Private Sub Form_Load()
Dim p As String
Randomize
p = ""
For i = 1 To 10
a(i) = Int(Rnd * 90) + 10
p = p & Str(a(i)) & ","
Next
Label4.Caption = LTrim(Left(p, Len(p) - 1))
End Sub
Private Sub Command2_Click()
Dim min, max As Integer, s As Single
min = 100: max = 10: s = 0
For i = 1 To 10
If a(i) > max Then max = a(i)
If a(i) < min Then min = a(i)
s = s + a(i)
Next
Text1.Text = max
Text2.Text = min
Text3.Text = s / 10
End Sub
Private Sub Command1_Click()
Form_Load
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
执行结果:

例 2 :斐波那契 (Fibonacci) 数列问题。
程序代码:
Private Sub Command1_Click()
Dim f(15) As Integer
List1.Clear
f(1) = 1: f(2) = 1
p = Format("Fib(" & 1 & "):", "!@@@@@@@@@@@@") & Format(f(1), "########")
List1.AddItem p, 0
p = Format("Fib(" & 2 & "):", "!@@@@@@@@@@@@") & Format(f(2), "########")
List1.AddItem p, 1
For i = 3 To 15
f(i) = f(i - 1) + f(i - 2)
p = Format("Fib(" & i & "):", "!@@@@@@@@@@@@") & Format(f(i), "########")
List1.AddItem p, i - 1
Next
End Sub
执行结果:

例 3 :由计算机随机生成 10 个互不相同的数,然后将这些数按由小到大的顺序显示。
程序代码:
Dim a(1 To 10) As Integer
Private Sub Command1_Click()
Form_Load
End Sub
Private Sub Command2_Click()
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next
Next
p = Str(a(1))
For i = 2 To 10
p = p & "," & Str(a(i))
Next
Label2.Caption = LTrim(p)
End Sub
Private Sub Form_Load()
Dim p As String, x As Integer
Randomize
p = ""
For i = 1 To 10
Do
x = Int(Rnd * 90) + 10
yes = 0
For j = 1 To i - 1
If x = a(j) Then yes = 1: Exit For
Next
Loop While yes = 1
a(i) = x
p = p & Str(a(i)) & ","
Next
Label1.Caption = LTrim(Left(p, Len(p) - 1))
Label2.Caption = ""
End Sub
执行结果:

例 4 :已知 10 位同学的姓名及数学、语文、外语 3 门课程的成绩。编写程序,实现以下要求:
1) 成绩的查询。
2) 各科平均分数的计算。
3) 显示各科平均分以下的同学姓名。
程序代码:
Dim a(1 To 10) As String, b(1 To 10, 1 To 4) As Integer
Private Sub Command1_Click()
s = 0
For n = 1 To 10
s = s + b(n, 1)
Next
s = s / 10
p = ""
For n = 1 To 10
If b(n, 1) < s Then p = p & a(n) & " "
Next
MsgBox " 低于平均分的同学有: " & Chr(13) & Chr(10) & p, 0, " 数学平均分为: " & s
End Sub
Private Sub Command2_Click()
s = 0
For n = 1 To 10
s = s + b(n, 2)
Next
s = s / 10
p = ""
For n = 1 To 10
If b(n, 2) < s Then p = p & a(n) & " "
Next
MsgBox " 低于平均分的同学有: " & Chr(13) & Chr(10) & p, 0, " 语文平均分为: " & s
End Sub
Private Sub Command3_Click()
s = 0
For n = 1 To 10
s = s + b(n, 3)
Next
s = s / 10
p = ""
For n = 1 To 10
If b(n, 3) < s Then p = p & a(n) & " "
Next
MsgBox " 低于平均分的同学有: " & Chr(13) & Chr(10) & p, 0, " 外语平均分为: " & s
End Sub
Private Sub Form_Activate()
For n = 1 To 10
List1.AddItem a(n), n - 1
b(n, 4) = b(n, 1) + b(n, 2) + b(n, 3)
Next
Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""
End Sub
Private Sub Form_Load()
a(1) = " 陈高阳 ": b(1, 1) = 89: b(1, 2) = 85: b(1, 3) = 91
a(2) = " 赵世杰 ": b(2, 1) = 75: b(2, 2) = 78: b(2, 3) = 84
a(3) = " 李民雄 ": b(3, 1) = 64: b(3, 2) = 82: b(3, 3) = 72
a(4) = " 马英丽 ": b(4, 1) = 88: b(4, 2) = 68: b(4, 3) = 64
a(5) = " 杨广民 ": b(5, 1) = 79: b(5, 2) = 79: b(5, 3) = 87
a(6) = " 李灵君 ": b(6, 1) = 91: b(6, 2) = 88: b(6, 3) = 87
a(7) = " 陈吉至 ": b(7, 1) = 68: b(7, 2) = 73: b(7, 3) = 64
a(8) = " 王东明 ": b(8, 1) = 58: b(8, 2) = 68: b(8, 3) = 65
a(9) = " 姜大伟 ": b(9, 1) = 76: b(9, 2) = 81: b(9, 3) = 88
a(10) = " 吴晓林 ": b(10, 1) = 78: b(10, 2) = 89: b(10, 3) = 82
End Sub
Private Sub List1_Click()
n = List1.ListIndex + 1
Text1.Text = b(n, 1)
Text2.Text = b(n, 2)
Text3.Text = b(n, 3)
Text4.Text = b(n, 4)
End Sub
执行结果:

 |