数组的使用:
数组:在实际应用中,要处理同一类型的成批数据。用一批具有相同名字,不同下标的下标变量来表示同一属性一组数据,能更清楚地表示它们之间的关系。
1、数组的定义。
在VB中可以用(Dim、ReDim、Static、Public)四个语句定义数组。
(1)Dim用在窗体模块或标准模块中,也可用于过程中。
(2)ReDim用在过程中。
(3)Static用在过程中。
(4)Public用在标准模块中定义全局数组。
定义方法:(以Dim为例)
第一种格式:
Dim数组名(第1维下标上界,第2维下标上界,……第n维下标上界)As类型名
第二种格式:
Dim数组名([下界to]上界[,[下界to]上界]……)As类型名
注:一般数组下界只能是0或1,默认为0,如果切以1为下标,可用OptionBase n定义。
如果需在运行时定义数组大小,可以通过下面方法进行。
(1)用ReDime语句定义
n=InputBox(“输入n的值”)
ReDim A(n)
(2)先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组,(括号不能省略)然后在过程中用ReDim语句定义带下标的数组。
Dim T()
S=InputBox(“请输入S”)
ReDim T(S)
Lbound(数组[,维])返回“数组”某一“维”的下界值。
Ubound(数组[,维])返回“数组”某一“维”的上界值。
例:1、输入一组数,求其输入逆序。
Private Sub Form_Click()
Dim a(5)
For i = 1 To 5
a(i) = InputBox("请输入所需数")
Print "第"; i; "个输入数为:"; a(i)
Next i
Print "输入数的逆序为:"
For i = 5 To 1 Step -1
Print a(i),
Next i
End Sub
例:2、冒泡排序。(十个数)
Private Sub Form_Click()
Dim a(10)
For i = 1 To 10
x = InputBox("请输入所需数据")
a(i) = Val(x)
Print "第"; i; "个数为:"; a(i)
Next i
For m = 1 To 9
For n = m + 1 To 10
If a(m) < a(n) Then
t = a(m)
a(m) = a(n)
a(n) = t
End If
Next n
Next m
Print "所输入数按降序排列为:"
For i = 1 To 10
Print a(i); " ";
Next i
End Sub
例:3、任意数降序排序。
Private Sub Form_Click()
Dim a()
s = InputBox("请输入要排序数字的个数:")
ReDim a(s)
For i = 1 To s
x = InputBox("请输入所需数据")
a(i) = Val(x)
Print "第"; i; "个数为:"; a(i)
Next i
For m = 1 To s - 1
For n = m + 1 To s
If a(m) < a(n) Then
t = a(m)
a(m) = a(n)
a(n) = t
End If
Next n
Next m
Print "所输入数按降序排列为:"
For i = 1 To s
Print a(i),
If i Mod 5 = 0 Then Print
Next i
End Sub
例:4、创建一个M×N的数组,并输出。
Private Sub Form_Click()
m = InputBox("请输入数组第一个下标:")
m = Val(m)
n = InputBox("请输入数组第二个下标:")
n = Val(n)
ReDim a(m, n)
For i = 1 To m
For j = 1 To n
x = InputBox("请输入所需数据")
a(i, j) = Val(x)
Print "第"; "a("; i; j; ")"; "个数为:"; a(i, j)
Next j
Next i
Print "所输入数组为:"
For i = 1 To m
For j = 1 To n
Print a(i, j),
Next j
Next i
End Sub
例:5、创建一个M×N的数组,输出这个数组,及其转置数组。
Private Sub Form_Click()
m = InputBox("请输入数组第一个下标:")
m = Val(m)
n = InputBox("请输入数组第二个下标:")
n = Val(n)
ReDim a(m, n)
For i = 1 To m
For j = 1 To n
x = InputBox("请输入所需数据")
a(i, j) = Val(x)
Print "第"; "a("; i; j; ")"; "个数为:"; a(i, j)
Next j
Next i
ReDim b(n, m)
For i = 1 To n
For j = 1 To m
b(i, j) = a(j, i)
Next j
Next i
Cls
Print "所输入数组为:"
For i = 1 To m
For j = 1 To n
Print a(i, j),
Next j
Next i
Print "所输出转置数组为:"
For i = 1 To n
For j = 1 To m
Print b(i, j),
Next j
Next i
End Sub
例:6、创建一个M×M数组并使其对角线元素为“1”,其余元素为“0”
Private Sub Form_Click()
m = InputBox("请输入数组下标:")
m = Val(m)
ReDim a(m, m)
For i = 1 To m
For j = 1 To m
If i = j Or i + j = m + 1 Then
a(i, j) = 1
Else
a(i, j) = 0
End If
Next j
Next i
FontSize = 20
Print "所求数组为:"
For i = 1 To m
For j = 1 To m
Print a(i, j);
Next j
Next i
End Sub