VB中怎样定义这么一个数组

VB中怎样定义这么一个数组,第1张

采用VB动态数组,下面的代码基于VB6环境;

Dim d() As Integer

Dim i As Integer

Dim N As Integer

Dim a As Integer

'生成数组

N = Val(InputBox("输入N:(小于100)"))

a = 1

ReDim d(a) As Integer

i = 0

d(a) = i

Do While i + N <= 100

   i = i + N

   a = a + 1

   ReDim Preserve d(a) As Integer

   d(a) = i

Loop

'输出数组,一行8个数字

Mecls

N = 0

For i = 1 To UBound(d)

   Print d(i),

   N = N + 1

   If N Mod 8 = 0 Then Print

Next i

Dim Counters (14) As Integer '15 个元素。

Dim Sums (20) As Double '21 个元素。

为建立公用数组,直接用 Public 取代 Dim。

Public Counters (14) As Integer

Public Sums (20) As Double

在过程之中同样的声明使用 Dim:

Dim Counters (14) As Integer

Dim Sums (20) As Double

第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。缺省的下界为 0。

为了规定下界,用关键字 To 显式提供下界(为 Long 数据类型):

Dim Counters (1 To 15) As Integer

Dim Sums (100 To 120) As String

包含其它数组的数组

Private Sub Command1_Click ()

Dim intX As Integer '声明计数器变量。

'声明并放置整数数组。

Dim countersA (5) As Integer

For intX = 0 To 4

countersA (intX) = 5

Next intX

'声明并放置字符串数组。

Dim countersB (5) As String

For intX = 0 To 4

countersB (intX) = "hello"

Next intX

Dim arrX (2) As Variant '声明拥有两个成员的新数组。

arrX (1) = countersA () '将其它数组移居到数组。

arrX (2) = countersB ()

MsgBox arrX (1) (2) '显示每一个数组的成员。

MsgBox arrX (2) (3)

End Sub

多维数组

有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的 X、Y 坐标。这时应该用多维数组存储值。

可用 Visual Basic 声明多维数组。例如,下面的语句声明了一个过程内的 10 × 10 的二维数组。

Static MatrixA (9, 9) As Double

Static MatrixA (1 To 10, 1 To 10) As Double

Dim MultiD (3, 1 To 10, 1 To 15)

这个声明建立了三维数组,大小为 4 × 10 × 15。元素总数为三个维数的乘积,为 600。

注意 在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为他们需要更大的存储空间。

用循环 *** 作数组

Dim I As Integer, J As Integer

Static MatrixA(1 To 10, 1 To 10) As Double

For I = 1 To 10

For J = 1 To 10

MatrixA (I, J) = I 10 + J

Next J

Next I

要创建动态数组,请按照以下步骤执行:

(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。

Dim DynArray ()

用 ReDim 语句分配实际的元素个数。 ReDim DynArray (X + 1)

ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个 *** 作。

ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。

ReDim DynArray (4 to 12)

例如,用第一次声明在模块级所建立的动态数组 Matrix1:

Dim Matrix1 () As Integer

Sub CalcValuesNow ()

ReDim Matrix1 (19, 29)

End Sub

ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:

ReDim Matrix1 (X, Y)

注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非 Unicode 平台上的两倍。

保留动态数组的内容

每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim Preserve DynArray (UBound (DynArray) + 1)

ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)

而不可这样编程:

ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

VB中数组有3种形式:静态数组 动态数组 和控件数组

1 静态数组

Public | Private | Static | Dim 数组名 (下标 [ 下标])[as 类型]

例 Dim s(2) as integer

2 动态数组

这类数组指声明数组时未给出数组的大小,使用时,随时用ReDim语句重新指出数组的大小。

首先像静态数组那样,只是不指出下标

然后要使用数组时,用ReDim指出

例 dim a() as integer

ReDim a (1 to 10) 重新定义数组 a 为一维数组,有10个元素

3 控件数组

是指一组有共同名称和类型的一个或多个控件,共享同样的事件过程

Private Sub Command1_Click()

'求数组中出现次数最多的数及出现次数。数组为整数, 数据由键盘输入。输出出现最多的数以及次数,如果出现最多次数的数部唯一,则要求全部输出。

Dim i As Long, j As Long, k As Long

Dim A() As Long, AN As Long

Dim B() As Long, BN As Long

Dim C() As Long

Dim S As String

AN = Int(Val(InputBox("请输入要输入整数的数量:")))

If AN <= 0 Then

MsgBox "输入的数量不正确,退出。"

Exit Sub

End If

ReDim A(1 To AN)

For i = 1 To AN

A(i) = Int(Val(InputBox("请输入第" & CStr(i) & "个整数(共" & CStr(AN) & "个):")))

Next i

ReDim B(1 To 1)

ReDim C(1 To 1)

BN = 1

B(1) = A(1)

C(1) = 1

For i = 2 To AN

For j = 1 To BN

If B(j) = A(i) Then Exit For

Next j

If j <= BN Then

C(j) = C(j) + 1

Else

BN = BN + 1

ReDim Preserve B(1 To BN)

ReDim Preserve C(1 To BN)

B(BN) = A(i)

C(BN) = 1

End If

Next i

For i = 1 To BN - 1

For j = i + 1 To BN

If C(i) < C(j) Then

k = C(i)

C(i) = C(j)

C(j) = k

k = B(i)

B(i) = B(j)

B(j) = k

End If

Next j

Next i

S = "输入的" & CStr(AN) & "个整数依次为:" & vbCrLf

For i = 1 To AN

S = S & CStr(A(i)) & Chr(9)

If i Mod 10 = 0 And i < AN Then S = S & vbCrLf

Next i

S = S & vbCrLf & vbCrLf & "出现最多的数以及次数:" & vbCrLf

For i = 1 To BN - 1

If C(i) <> C(i + 1) Then Exit For

Next i

For k = 1 To i

S = S & CStr(B(k)) & Chr(9) & CStr(C(k)) & vbCrLf

Next k

MsgBox S

End Sub

Dim A(19) As Integer

Private Sub Command1_Click() '生成数组

Dim i As Integer

Randomize

Text1Text = ""

For i = 0 To 19

    A(i) = Int(Rnd  101)

    Text1Text = Text1Text & A(i) & " "

Next

End Sub

Private Sub Command2_Click() '排序

Dim i As Integer, j As Integer, k As Integer

Text2Text = ""

For i = 0 To 18

    For j = i + 1 To 19

        If A(i) > A(j) Then

            k = A(i)

            A(i) = A(j)

            A(j) = k

        End If

    Next

Next

Text2Text = ""

For i = 0 To 19

    Text2Text = Text2Text & A(i)

Next

End Sub

以上就是关于VB中怎样定义这么一个数组全部的内容,包括:VB中怎样定义这么一个数组、VB怎么声明数组、vb中怎样定义一个数组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10634514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存