VB资料之家 计算机二级考试一扫空 (36) 下载本文

第九讲 数组

-------动态数组与控件数组

重点:

1、掌握动态数组的定义与使用 2、熟悉控件数组的建立及使用 3、数组常用算法程序设计

1 动态数组的概念:程序在运行过程中,其元素个数(大小)可以改变的数组 2 动态数组说明的一般格式:

(说明数组时不指明维数及下标范围) dim 数组名() [as 数据类型]

当可以确定数组元素大小时对动态数组再次说明,用如下重定义数组语句: ReDim [Preserve] 数组名(维界定义) [As 数据类型 ]

说明:当重新定义数组后,要保留原来数组中的数据,则选择preserve选项。 例如: Dim Pin() As Integer

private Sub form_click() ReDim Pin(5)

……

End Sub

详细说明动态数组定义格式中的每个参数的作用,并进行演示! 15时间

接着用下面的例子来说明动态数组的作用!

以下的例子可根据需要在讲授时选择!

例1:有一组数,以-999结束,编程找出其中正数、负数、零的个数。(-999不作为数据处理)

注:例1和例3两个中选择一个讲! Private Sub Form_click()

Dim x() As Integer, n As Integer

Dim n1 As Integer, n2 As Integer, n3 As Integer n = 1

Do

ReDim Preserve x(n)

x(i) = InputBox(\请输入一个数\ Print x(i);

If x(i) = -999 Then Exit Do If x(i) < 0 Then n1 = n1 + 1 ElseIf x(i) = 0 Then n2 = n2 + 1 Else

n3 = n3 + 1 End If n = n + 1 Loop Print

Print \小于0的数据个数为:\ Print \等于0的数据个数为:\ Print \大于0的数据个数为:\End Sub

例2:打印下面的图形:----------------------------- 选讲内容 ********* ******** ******* ****** ***** **** *** ** * * ** *** **** ***** * *** *****

*******

Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 9 Print Tab(5); For j = 1 To 10 - i Print \ Next j Print Next i End Sub

Private Sub Form_click()

Dim i As Integer, j As Integer For i = 1 To 5 Print Tab(5); For j = 1 To i Print \

Next j Print Next i End Sub

Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 4

Print Tab(9 - i); For j = 1 To 2 * i - 1 Print \ Next j

Print Next i End Sub

例3 从键盘输入任意个数,求出这些数的总和和平均值! Dim a() as integer

Dim I as integer, sum as integer, avg as single, t as integer Do

I=inputbox(―请输入一数!‖) If i=-1 then Exit do Else

T=t+1

Redim preserve a(t) A(t)=i

Sum=sum+i endif

Loop

Avg=sum/ubound(a)

Print ―sum=‖;sum,‖avg=‖+cstr(avg)

例4 编程实现随机生成20个互不相同的两位整数! Dim a() as integer ,I as integer, n as integer,j as integer Redim a(20) as integer For i=1 to 20

k= inputbox(―请输入N的值‖) for j=1 to i-1 if a(j)=k then exit for next j

if j>i-1 then a(i)=k else i=i-1

endif next i

例 5 在一组有序数列中插入一个数,要求插入后的数还是有序数列! Dim a() as integer

Dim I as integer , n as integer, k as integer For i=1 to 10

A(i)=10*i

Next i

N=inputboxa(―请输入要插入的数‖)

以下有两种方案1 前插入 2 后插入(可以用班级中的同学进行示范教学) T=10

Redim preserve a(11) Do while n

A(t+1)=n For i=1 to 11 Print a(i);

Next i

后插入法给学生讲清算法的原理,要求学生自己课后写出程代码!

9.2 控件数组

一、控件数组:

动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用该数组时,随时可用ReDim语句重新定义数组的大小。使用动态数组的优点是:用户可以根据需要有效地利用存储空间,它是在程序执行到ReDim语句时分配存储空间。

二、建立控件数组方法:

1复制现存控件:

在窗体上绘制控件数组中第一个元素的控件→设置它的名称属性→右键单击此对象→复制→右击窗体→粘贴。(重复复制操作) 将已存在的控件组成一个数组。(同一类型的控件)

确定第一个元素→选定要包含在控件数组中的其它对象→将它的名称属性设置成和第一个元素相同。(重复此操作)

说明:1 控件数组中的每个元素下标为此控件的index 属性值(≤32767) 控件数组中的每个控件共享一个事件过程。 2创建同名控件

在控件面板中直接添加相同类型的控件到窗体上,将它们的名子都命名为同一个名子时,系统将会提示你创建一个控件数组

三、应用举例

使用控件数组实现字体格式的设置!