第7章 数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.1.1 数组的定义
• 例:Dim A(1 to 100,0 to 50,-3 to 4).定义了一个 三维数组,其各维的上,下界可以得到:
• • • •

• •
Print LBound(A,1), UBound(A,1) Print LBound(A,2), UBound(A,2) Print LBound(A,3), UBound(A,3) 输出结果为: 1 100 0 50 -3 4
7.2 数组的基本操作
• 4.数组元素的复制
• A. 单个元素可以像简单变量一样复制.如:
• •
Dim B%(4,8),A%(6,6) B(2,3)=A(3,2) Dim a%(8),b%(3,2) A(3)=b(1,2) B(2,1)=a(4)
• B.二维数组可以和一维数组互相赋值.如:
• • •
方法二:(下标从0开始)
Private Sub Command1_Click() Dim sc(4, 4) As Integer Dim i As Integer, j As Integer Form1.FontSize = 18 For i = 0 To 4 For j = 0 To i sc(i, j) = 5 * i + j Print sc(i, j); Next j Print Next i End Sub
7.1.1 数组的定义
• 在VB中,可以用4个语句来定义数组
• Dim 用在窗体模块或标准模块中,也可用在 过程中。 • Redim 用在过程中 • Static 用在过程中 • Public 用在标准模块中,定义全局数组
7.1.1 数组的定义
• 1.Dim 数组名(下标上界) As 类型名称 • 功能:定义一个一维数组. • 如:Dim Test(5) As Integer 定义一个一维 数组,该数组名字为Test,类型为整型,占据 6个(0~5)整型变量的空间.空间大小(2*6)字节 • 对于二维数组,定义形式为:
7.1 数组的概念
• 数组的概念
• 是有序的数据的集合。每个数组是用一个统一 的名称表示数组元素的集合,数组中的每一元 素具有唯一索引号(即下标),可以用数组名 及下标唯一地识别一个数组的元素。 • 数组必须遵循先声明后使用的原则,声明一个 数组就是声明其数组名、类型、维数和数组的 大小。下标的个数决定数组的维数,各维下标 之间用逗号分开。在VB中有一维数组、二维 数组等,最多可以达到60维。
7.2 数组的基本操作
• 例3:键盘输入10个学生的成绩,求平均成绩,并 打印出所有比平均成绩高的学生的成绩. • 例4:从键盘输入10个数放入一维数组中,求其中 的最大值及最小值. • 例5:在命令按钮的单击事件中完成以下功能:产 生30个0~1000之间的随机整数数放入一个数 组中,求其中的最大值并在窗体上显示. • 例6:从键盘输入9个整数,建立一个3*3的矩阵a, 求该矩阵的转置矩阵b并分别打印这两个矩阵. • 例7:随机产生9个0~100之间的整数放入一个 3*3矩阵中,求该矩阵中所有数的最大值及该最 大值所在的行和列.
7.1.2 默认数组
• 所谓默认数组,就是数据类型为Variant(默认)的数组.定 义方式为: • Dim elec(1 to 100) 或 • Dim elec(1 to 100) As Variant • 对于默认数组,同一个数组中可以存放各种不同的数据. • 如: dim defau (5) • defau (1)=100 • defau (2)=123.456 • defau (3)=“Beijing” • defau (4)=Now • defau (5)=&HAAF • for i=1 to 5 • print defau(i) • next
7.1.1 数组的定义
• 2. Dim 数组名([下界 To ]上界[, [下界 To ]上 界]„„) As 类型名称 • 如: Dim arr(-2 to 3), 定义了一个一维数组,其 下标的下界为-2,上界为3,数组元素为arr(-2), arr(-1), arr(0), arr(1), arr(2), arr(3)共6个元素. • 若省略了下界To,则与第一种形式相同. • 注意:
7.2 数组的基本操作
• 1.数组的引用


通常指对数组元素的引用,方法是在数组后面的括 号中指定下标,如x(8),y(2,3)等. 一般注意类型与定义时一致,下标不能越界. A. 一般通过FOR循环语句及InputBox函数输入.如: Dim studname(1 To 4) As String For i = 1 To 4 temp$ = InputBox("Enter Name:") studname(i) = temp$ Next

A.在同一个过程中,数组名不能与变量名相同,否则 出错.如: „ Dim a(5): Dim a „ • B.在定义数组时,每一维元素个数必须是常数,不能 是变量或表达式,否则不合法.
7.1.1 数组的定义
例:Dim arr2(n) • dim arr3(n+5) 均不合法,即使在执行数组定义语 句之前给出变量n的值.如: n=inputbox(“输入n的 值”) • dim arr2(n) • C.数组的类型通常在AS后给出,如果省略AS子句, 则定义的是默认数组.此外,也可以通过类型说明符 来指定数组类型.如:Dim a%(5),b!(3 to 8), c#(12,13)等 D.无论用哪一种格式定义数组,下界都必须小于上界. 数组的上,下界值可以用函数测试.格式为: • LBound(数组 [,维数]),测试下界 • UBound(数组 [,维数]),测试上界
7.1.1 数组的定义
• • •
Option Base 1 Dim stud(22) As Integer 此时数组元素为stud(1),stud(2),„,stud(22).
• 注意:此处的n只能为0或1,该语句只能出现在 窗体级或模块级,不能出现在过程中,必须放在 数组定义之前.

注意区分“可以使用的最大下标值”和“元素个 数”。 “可以使用的最大下标值”指的是下标值 的上界,即定义数组时括号中的值;而“元素个 数”指数组中成员的个数。如Dim arr(5)中,最 大下标值为5,而元素个数为6(默认下标从1开 始的情况下)。
7.2 数组的基本操作
• 例2: • Private Sub FBiblioteka Baidurm_Click() • Dim studname(1 To 4) As String • For i = 1 To 4 • temp$ = InputBox("Enter Name:") • studname(i) = temp$ • Print studname(i); • Next End Sub
类型.
7.3 动态数组
• 功能:

该语句用来重新定义动态数组,按定义的上下界重 新分配存储单元.当重新分配动态数组时,数组中的 内容将被清除,但如果使用Preserve选择项,则不 清除数组内容.
• 说明:

• •
A.在窗体层或模块层定义动态数组时只能类型,没 有维数,其维数在Redim语句中给出,最多不能超过 8维. B.用Redim定义数组时不能修改数组的类型. C.在一个程序中,可以多次用Redim语句定义同一 个数组,随时修改数组中元素的个数及数组维数.
• 2.数组元素的赋值


• •


7.2 数组的基本操作
• • •

• •

• •
多维数组输入通过多重循环来实现. Option Base 1 ‘在窗体层定义 Private Sub Command2_Click() Dim a(3, 5) For i = 1 To 3 For j = 1 To 5 a(i, j) = i * j Next j, i End Sub
Visual Basic 语言程序设计
第7章 数组
• 本章主要内容 • • • • • • 数组的概念 数组的声明和应用 动态数组 For Each...Next循环语句 控件数组 其它控件—列表框和组合框、滚动条等
7.1 数组的概念
• 简单变量用一个变量名标识,不同的变量使用 不同的变量名表示。处理成批的数据时,必须 使用数组来处理表示100个学生的成绩,采用 简单变量来表示:s1,s2,s3,„ s99,s100 • 采用数组来表示:t(0), t(1), t(2),„ t(98), t(99). 其中: t(k) (k=0,1,2,„99)为数组元素(或称下 标变量),它表示第k+1个学生的成绩, k称为下 标变量的下标 • 数组的一个主要特点是通过下标(相当于索引) 来引用数组元素
7.2 数组的基本操作
• C.为了复制整个数组,仍要使用For循环语句.
• • • •
如:dim a(5),b(5) For i=1 to 5 a(i)=b(i) next
• 5.数组的应用 • 例1:交换数组中各元素

要求:第1个元素与最后一个交换,第2个元素与倒数 第2个交换,以此类推.
• 例2:用冒泡排序法对10个数进行排序,这10个数 用初始化方式赋值.
7.2 数组的基本操作
• B.利用Array函数赋值.格式为:
• •

• • • • •
数组变量名=Array(数组元素值) 如:Dim aa As Variant aa=array(1,2,3,4,5) 定义时,数组变量类似于普通变量,但作为数组使用. 只能定义为变体类型,不能指定具体的其它类型. 默认下标从0开始,若想使下标从1开始,也必须用 Option Base 1说明. Array函数只适用于一维数组,不能对二维或多维数 组进行初始化. 以上赋值方法称为数组的初始化操作,是在程序运 行之前初始化,不占用运行时间.
7.3 动态数组
• 动态数组:声明时不指出数组大小,在 运行时分配内存空间的数组. • 定义:

A.在窗体层、模块层或过程中用Dim或 Public声明一个没有下标的数组(省略括 号中的下标,括号不能省). • B.在过程中用Redim语句定义带下标的数 组.格式为: Redim [Preserve] 变量(下标) As
• •
Dim 数组名(第一维下标上界,第二维下标上界) As 类型名称 如:Dim Demo(2,3) As Integer 定义一个二维数组, 该数组名为Demo,有3(0~2)行,4(0~3)列,占据 12(3*4)个整数空间.
7.1.1 数组的定义
• 说明



格式中的“数组名”与简单变量相同,可以是任何 合法的VB标识符.类型可以是任何基本数据类型 或用户自定义类型.也可以是Variant类型。 当用Dim定义数组时,该语句把数值数组中的全部 元素都初始化为0,而把字符串数组中的全部元素 都初始化为空字符串. 在一般情况下,下标的下界默认为0,如果希望下标 从1开始,可以通过语句Option Base来设置.其格 式为:Option Base n,指定数组下标的下界为n。
例:数组元素的输出
输出方阵sc中的下三角元素
方法一:(下标从1开始)
Option Base 1 Private Sub Command1_Click() Dim sc(5, 5) As Integer Dim i As Integer, j As Integer Form1.FontSize = 18 sc(1, 1) = 0 Print sc(1, 1) For i = 2 To 5 For j = 1 To i sc(i, j) = 5 * (i - 1) + (j - 1) Print sc(i, j); Next j Print Next i End Sub
• 说明:
7.2 数组的基本操作
• 3.数组元素的输出
• •

• • • • • •


用循环语句和Print方法来实现. 例1:Private Sub Command2_Click() Dim a(3, 5) For i = 1 To 3 For j = 1 To 5 a(i, j) = i * j Print a(i, j); Next j Print Next i End Sub
相关文档
最新文档