第五章 VB中的数组.

Slides:



Advertisements
Similar presentations
高等学校计算机基础教育教材 上海中医药大学现代教育技术中心 计算机教学部. 第五章 数 组 ( 4 学时) 5.1 数组的概念 5.2 静态数组及声明 5.3 动态数组及声明 5.4 数组的基本操作 5.5 控件数组 5.6 自定义数据类型 5.7 常用算法(二) 5.8 常见错误.
Advertisements

第5章 数组 5.1数组的基本概念 5.2静态数组与动态数组 5.3数组的基本操作 5.4综合应用程序举例.
Visual Basic 程序设计 第四章 数组.
第6章 习题讨论 单选题 多选题(无) 填空题 编程题 退出.
第四章 控制结构.
Visual Basic 程 序 设 计 山东外贸职业学院 信息管理系 柳淑花
C语言程序设计.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
高等医药院校药学类第三轮规划教材——大学计算机基础
第五章 数组.
Visual Basic程序设计.
BLANK overview.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
VB程序设计语言 主讲教师:王 杨.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
第五章 数组 5.1 数组的概念 5.2 数组的基本操作 5.3 数组举例 5.4 动态数组 5.5 程序示例及相关算法.
1、数组的概念 2、静态数组 3、动态数组 4、数组的基本操作 5、控件数组
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
第5章 数组 Visual Basic程序设计.
初识Visual Basic.
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
计算机程序设计强化复习 Visual Basic 6.0.
走进编程 程序的顺序结构(二).
新觀念的 VB6 教本 第 6 章 資料型別.
第5章 Visual Basic控制结构 之 常用算法举例
第 8 章 过程.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第七章 数组 一维数组:一个变量每次只能存储一个值。一个包含40个元素的数组变量可以存放40个值,采用循环结构实现计算过程非常方便。
小结 郭清溥.
顺序表的删除.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第二章、第三章错题分析.
第二章 Java基本语法 讲师:复凡.
VB与Access数据库的连接.
VB程序设计语言 主讲教师:王 杨.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第4章 Excel电子表格制作软件 4.4 函数(一).
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
1位选手参加了歌唱比赛,评委们的评分如下:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
1位选手参加了歌唱比赛,评委们的评分如下:
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
算法与Visual Basic程序基础(二)
鸡兔同笼(续) ——选择结构.
§4.5 最大公因式的矩阵求法( Ⅱ ).
顺序结构程序设计 ——关于“字符串”和数值.
Presentation transcript:

第五章 VB中的数组

引例:利用随机函数产生20个50~100范围内的随机数,显示最大值和最小值。运行界面如图 5.2 静态数组 引例:利用随机函数产生20个50~100范围内的随机数,显示最大值和最小值。运行界面如图 [程序代码] Private Sub Command1_Click() Dim maxa As Integer, mina As Integer, x As Integer, i As Integer Form1.Cls ‘每单击一次清除原来内容 maxa = 50 ‘假设较小的数为最大 mina = 100 ‘假设较大的数为最小 Randomize For i = 1 To 20 x = Int(Rnd * 51 + 50) Print x; IF i Mod 10 = 0 Then Print IF x > maxa Then maxa = x F x < mina Then mina = x Next i Print Print "最大值为"; maxa Print "最小值为"; mina End Sub x是一个简单变量,存放的是最后一个随机数

5.2.1 一维数组的声明和引用 1. 静态数组及声明 形式: Dim 数组名(下标1[,下标2…]) [As 类型] 数组不是一种数据类型,而是一组相同类型的变量的集合,数组必须先声明后使用。 两类数组: 静态(定长)数组、动态(可变长)数组 1. 静态数组及声明 形式: Dim 数组名(下标1[,下标2…]) [As 类型] 声明了数组的名、维数、大小、类型 维数:几个下标为几维数组,最多60维。 下标:[下界 To ] 上界 省略下界为0 ,必须为常数。 每一维大小:上界-下界+1 数组大小: 每一维大小的乘积 例:Dim mark(1 to 100) As Integer

Dim lArray( 0 To 3, 0 To 4) As Long 共有 4×5个元素 等价于: Dim lArray(3, 4) As Long 注意:(1)下界缺省为0,也可在重新定义数组的下界。例如: Option Base 1 (2)错误的声明,下标是变量 n =Inputbox("输入n " ):Dim x(n) As Single

上界/下届必须为常数,不可以为表达式和变量 如果声明数组时省略类型,则为variant变体型。 说明 Dim数组名([下界 to ]上界)[As类型](也可使用类型符号) 例如:dim a%(3 to 10) 上界>=下届 上界/下届必须为常数,不可以为表达式和变量 如果声明数组时省略类型,则为variant变体型。 可以在一条dim语句中同时定义多个数组,用逗号分隔 dim c(15) as integer, b(5) as single

5.2.1 一维数组的声明和引用 2.一维数组元素的引用 引用一维数组元素的格式:数组名(下标) 引用数组元素时,下标可以为整型常量、变量或表达式 例如:i=1 a(1)=1:a(i)=x+y:a(i+1)=t print a (1);a(i) 在数组声明中的下标说明了数组的整体,即每维的大小; 而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。 例如: Dim x(10) As Integer ' 声明了x数组有11个元素 x(10)=100 ' 对x(10)这个数组元素赋值

5.2.2使用一维数组 1.一维数组的赋值 (1)对数组中的元素逐个赋值 例如:Dim arr(5) As Integer arr(0)=5 : arr(1)=4 : arr(2)=-2 : arr(3)=1 : arr(4)=-8 : arr(5)=6 一般来说,如果各个数组元素的值彼此之间毫无规律可寻,则可以采用逐个赋值的方法,显然这种方法在进行大量数据的处理时决非上乘之选。 (2)使用循环语句对数组元素赋值 例如: For i=0 to 5 arr(i)=Int(Rnd*90)+10 Next i 如果各个数组元素的值彼此之间是有规律可寻的,则可以采用循环语句来实现其赋值操作。

(2)使用循环语句对数组元素赋值 例如: 例如: For i=1 to 5 For i=1 to 50 a(i)=val(inputbox(“请输入一个数字”)) Next i 例如: For i=1 to 50 a(i)=5 Next I 例如: For i=1 to 50 a(i)=100+i Next I

2.一维数组的输出 对于一维数组的输出,基本上都是使用一个单循环语句来达到目的: For i=0 to 5 Print arr(i) Next i 例5-1随机产生50个0~100之间的整数,输出并求出总和与平均值。程序运行界面如图所示。 程序代码: Private Sub Form_Click() Dim a%(1 To 50), i%, sum%, ave% sum = 0 For i = 1 To 50 a(i) = Int(Rnd * 101) sum = sum + a(i) Print Tab(5 * ((i - 1) Mod 10)); a(i); If i Mod 10 = 0 Then Print ave = sum / 50 Print Print "总和为:"; sum; "平均值为:"; ave End Sub Private Sub Form_Click() Dim a%(1 To 50), i%, sum%, ave% sum = 0 For i = 1 To 50 a(i) = Int(Rnd * 101) Print Tab(5 * ((i - 1) Mod 10)); a(i); If i Mod 10 = 0 Then Print Next I for i=1 to 50 sum=sum+a(i) next i ave = sum / 50 Print Print "总和为:"; sum; "平均值为:"; ave End Sub

现在有一个数组a(1 to 10),要将数组a复制给数组b 3.静态一维数组的复制 现在有一个数组a(1 to 10),要将数组a复制给数组b Dim a(1 to 10) as integer,b(1 to 10) as integer For i=1 to 10 a(i)=val(inputbox(“请输入一个数”)) Next i For i=1 to 10 ‘开始复制数组 b(i)=a(i)

5.3.1动态数组的声明 动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小 声明动态数组通常分为两步: 第一步,使用Dim语句声明一个没有下标的数组,即括号内为空的数组,但是括号不能省略; 第二步,在过程中使用ReDim语句指定该数组的大小,其作用是为数组分配实际存储空间。 Redim语句的格式:     ReDim数组名(下标1[,下标2…])[As类型]   其中下标可以是常量,也可以是有了确定值的变量,类型可以省略,若不省略,必须与Dim中的声明语句保持一致。 例如:  例 Sub Form_Load( ) Dim x( ) As Single n =Inputbox(“输入n”) ReDim x(n) End Sub

说明 在过程中可多次使用ReDim来改变数组的大小和维数。 例如: Dim a() as integer Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。 在过程中可多次使用ReDim来改变数组的大小和维数。 例如: Dim a() as integer Redim a(10):改变数组大小 Redim a(3,4):改变数组大小和维度 Redim a(4,5) 可使用redim来改变数组的格式和维度,但不能改变数组的数据类型 使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve只能改变最后一维的大小,前面几维大小不能改变。 ReDim中的下标可以是常量,也可以是有了确定值的变量。 静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。

要保留原来数组中的数据,使用Preserve。但只能改变最后一维的大小,不能改变维度。 格式:Redim Preserve 数组名(下标) 5.3.1动态数组的声明 要保留原来数组中的数据,使用Preserve。但只能改变最后一维的大小,不能改变维度。 格式:Redim Preserve 数组名(下标) 例如: Dim a() as integer, Dim b() as integer Redim a(10) ’动态改变数组大小 Redim Preserve a(4) ‘改变数组大小,并保存原来数组中的数据 Redim b (3,5) Redim Preserve b (3,6) ‘只能改变最后一维的大小 Redim Preserve b(3) ’出错

5.3.2与动态数组操作相关的函数 a=array(3,4,5) For i=Lbound (a) To Ubound(a) 1.Array函数(p98) 使用格式:Array(参数列表) 说明: (1)用Array函数给动态数组赋值后,该数组被确定为一维数组,其下标下界由Option Base n语句决定,下标上界由参数个数决定。 (2)用Array函数也可给Variant类型的变量赋值,此时该变量也表示一个Variant类型的动态数组。 例如:Dim a() As Variant ,b As Variant    a=Array(1,”abc”,3)    b=Array(5,6)    a=Array(9,8,7,6) ‘重新改变数组a的元素个数    ReDim Preserve a(2),b(1 To 5): 改变数组a、b的大小,并保留原来的数据。 2.Lbound()函数和Ubound()函数 Lbound()函数和Ubound()函数帮助用户确定数组每一维下标的变化范围,Lbound()函数返回数组的下界,Ubound()函数返回数组上界。 使用格式:Lbound(数组名,n)和Ubound(数组名,n) 说明:n表示第几维,默认为1(第一维),即省略参数n时,默认数组为一维数组。 例如:输出动态一维数组a中的各元素    For i=Lbound (a) To Ubound(a)     Print a(i)    Next i a=array(3,4,5) For i=Lbound (a) To Ubound(a)  Print a(i) Next i a=array(12,43,56,86,87)

例5-4通过Array函数获得6整数存放于数组a中,在文本框输入一个数,将其插入到数组中,使得数组中的各元素保持小到大的次序,并显示,然后删除数组中负数元素并显示最后结果。程序运行结果如图所示。 应用程序初始化程序代码: Dim a() Private Sub Form_Load() a = Array(-3, -6, 2, 4, 8, 12) Print "原数组中的元素为:" For i = 0 To 5 Print a(i); Next i Print End Sub

插入及删除元素的程序代码: Private Sub Command1_Click() Dim i%, j%, x% x = Val(Text1.Text) For i = 0 To UBound(a) If x <= a(i) Then Exit For Next i ReDim Preserve a(UBound(a) + 1) For j = UBound(a) To i Step -1 a(j) = a(j - 1) Next j a(i) = x Print "插入元素后的数组为:" Print a(i); Print End Sub Private Sub Command2_Click() i = 0 Do While (i <= UBound(a))  If a(i) < 0 Then    If i < UBound(a) Then   For j = i To UBound(a) - 1    a(j) = a(j + 1)    Next j  End If  ReDim Preserve a(UBound(a) - 1)   n = n - 1 Else   i = i + 1 End If Loop Print "删除负数后数组为:" For i = 0 To UBound(a) Print a(i); Next i End Sub

5.4 数组的基本操作 1. 数组元素的赋初值 (1)用循环 For i = 1 To 10 iA(i)=0 Next i (2) Array函数 Dim ib As Variant ib = Array("abc", "def", "67") For i = 0 To UBound(ib) Picture1.Print ib(i); " "; Next i 注意: 利用Array对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型只能是Variant。 数组的下阶为零,上界由Array函数括号内的参数个数可决定,也可通过函数Ubound获得。

b = a 2.数组的赋值(p101 注意) 在VB6.0中,提供了数组直接对数组的赋值。例如: Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) b = a 3. 数组的输出 输出方阵sC中的下三角元素 For i = 0 To 4 For j = 0 To i sc(i, j) = i * 5 + j Print sc(i, j); " "; Next j Print ' 换行 Next I Redim b(UBound(a)) For i = 0 To UBound(a) b(i) = a(i) Next i 注意:赋值号左边的数组只能声明为可调数组或简单变量。

4. 求数组中最大元素及所在下标 Dim Max As Integer,iMax As Integer Max=iA(1):iMax=1 For i = 2 To 10 If iA(i)>Max Then Max=iA(i) iMax=i End If Next I 5. 将数组中各元素交换 For i =1 To 10\2 t=iA(i) iA(i)=iA(10-i+1) iA(10-i+1)=t

数组中常见错误和注意事项 1.静态数组声明下标出现变量 n = InputBox("输入数组的上界") Dim a(1 To n) As Integer 2.数组下标越界 引用的下标比数组声明时的下标范围大或小。 Dim a(1 To 30) As Long, i% a(1) = 1: a(2) = 1 For i = 2 To 30 a(i) = a(i - 2) + a(i - 1) a(0)不存在 Next i 3.数组维数错 数组声明时的维数与引用数组元素时的维数不一致。 Dim a(3, 5) As Long a(i)=10 4.Aarry函数与Split函数使用问题 只能对Variant 的变量或动态数组赋值。 5.获得数组的上界、下界 Ubound 、Lbound函数

常用算法(二) 1.数组排序(选择法) 对已知存放在数组中的n个数,用选择法按递增顺序排序。 For i = 1 To n - 1 iMin= i For j = i+1 To n If a(j) <a(iMin) Then iMin = j Next j t= a(i): a(i) = a(iMin) : a(iMin) = t Next I

2.排序(冒泡法) 冒泡法排序在每一轮排序时只要将第一个与其他几个比较,只要次序不对,就交换,出了内循环,最小数已冒出。排序进行的过程见下表。 原始数据 8 6 9 3 2 7 a(0) a(1) a(2) a(3) a(4) a(5) 第一趟排序 2 8 9 6 3 7 第二趟排序 2 3 9 8 6 7 第三趟排序 2 3 6 9 8 7 第四趟排序 2 3 6 7 9 8 第五趟排序 2 3 6 7 8 9

例:使用Array函数建立并输出一个数组,然后将该数组的元素按从小到大的原则进行排序,并输出排序结果。程序运行结果如图所示。 程序代码为: Private Sub Command1_Click() Dim b As Variant, n As Integer Cls b = Array(17, 10, 45, 27, 60, _ 18, 79, 41, 59, 21) Print " 数组输出:" n = UBound(b) For i = 0 To n Print b(i); Next i Print For i = 0 To n - 1 '开始排序 For j = n To i + 1 Step -1 If b(j - 1) > b(j) Then t = b(j - 1): b(j - 1) = b(j): b(j) = t End If Next j Print " 冒泡法排序后输出:" For i = 0 To n Print b(i); Next i Print End Sub 冒泡法排序

3. 查找 Private Sub Command1_Click() Dim i As Integer, tofind As Integer, found As Boolean tofind = Val(InputBox("查找", "请输入要查找的数")) found = False For i = 0 To UBound(a) If a(i) = tofind Then found = True Exit For End If Next i If found = True Then Form1.Print "您要找的数是"; tofind; "。在数组中找到,在第"; i + 1; "个元素" Else Form1.Print "您要找的数是"; tofind; "。抱歉,在数组中未找到" End Sub

Private Sub Command1_Click() Dim num%(0 To 9), i%, j%, a As String * 1 4. 统计 例5-5输入字符串分别统计该字符串中每个数字字符(“0” ~“9”)出现的次数。用num(0)来统计字符“0”的个数,用num(1)来统计字符“1”的个数,…,用num(9)来统计字符“9”的个数,并显示最后的统计结果。程序运行结果如图所示。 程序代码: Private Sub Command1_Click() Dim num%(0 To 9), i%, j%, a As String * 1 Picture1.Cls lg = Len(Text1.Text) For i = 1 To lg c = Mid(Text1, i, 1) If c >= "0" And c <= "9" Then j = Asc(c) - 48 num(j) = num(j) + 1 End If Next i For i = 0 To 9 If num(i) > 0 Then Picture1.Print """"; Chr$(i + 48); """"; "="; num(i); End Sub

4.数组元素的插入与删除 (1) 插入 (例5-4) 在有序数组a(1 to n)(原有n-1个元素)插入一个值Key元素,算法: 查找要插入的位置k(1<=k<=n-1) 腾出位置,把最后一个元素开始到第k个元素往后移动一个位置 第k个元素的位置腾出,就可将数据Key插入 (2) 删除 要找到欲删除的元素的位置k;然后从k+1到n个位置开始向前移动;最后将数组元素减1。

5.4控件数组 5.4.1控件数组的概念   控件数组是一组相同类型的控件,共用同一个控件名,共享同样的事件过程,完成相似的操作,每个控件都有一个唯一的下标,即Index属性,第一个元素的下标为0。控件数组适用于若干个控件执行的操作相似的场合。 5.4.2控件数组的建立 建立控件数组有两种基本方法: 1.在设计阶段静态创建 基本步骤: (1)在窗体上创建控件数组中的第一个控件,并设置好控件名等相关属性。 (2)选择该控件,执行 “复制”命令。 (3)根据需要执行若干次 “粘贴”命令。 (4)进行事件过程的编程。 2.在运行阶段动态添加 (1)在窗体上创建控件数组中的第一个控件,设置好控件名等相关属性后,设置其Index属性值为0,表示这是一个控件数组。 (2)在代码中使用Load语句和Unload语句进行控件元素的添加和删除    使用格式:Load控件数组名(下标)         Unload控件数组名(下标)。 (3)设置新添加控件的相关属性,可通过Left属性和Top属性确定其位置,并将Visible属性设置为True。 5.4.3控件数组的引用 控件数组元素的引用格式:控件数组名(Index)

例5-6:建立含有3个命令按钮的控件数组,当单击某个命令按钮时,分别执行不同的操作。程序运行结果如图所示: 解:(1)在窗体上建立一个命令按钮,其Name属性设置为Comtest,复制两个命令按钮   (2)把3个命令按钮的Caption属性依次设置为“命令按钮1”,“命令按钮2”和“退出”   (3)双击任一命令按钮,打开代码编辑窗口,键入如下事件过程: Private Sub comtest_Click(Index As Integer) FontSize=12 If Index=0 Then  Print “单击第一个命令按钮” ElseIf Index=1 Then Print “单击第二个命令按钮” Else End End If End Sub

5.2.3二维数组的声明和引用 1.静态二维数组的声明 声明格式:Dim 数组名([下届 to] 上界,[下届 to] 上界)[As类型] 说明: 二维数组的元素个数=(上界1-下界1+1) ×(上界2-下界2+1)。 例如:dim d(-1 to 5,6) as long 和一维数组类似,声明二维数组时,下届 /上界只能是常数 2.二维数组的赋值和引用 通过InputBox函数输入,此方法适合输入少量数据。   例如:    Dim s(5,6)As integer    For i= 0 To 5      For j=0 To 6       s(i,j)=InputBox("输入第" & i & "行第" & j &"列的值") form1.print s(i,j)      Next j    Next i

例5-3:在文本框中输入矩阵的行列数n,根据文本框内输入矩阵的行列数n,用1~n×n的自然数生成1个n×n矩阵(数组),并显示在图形框中, 并分别能显示上、下三角矩阵。程序运行界面如图所示。 Option Base 1 Dim a%() Dim n% Private Sub Command1_Click() Dim i%, j% Picture1.Cls n = Val(Text1.Text) ReDim a(n, n) For i = 1 To n For j = 1 To n a(i, j) = (i - 1) * n + j Picture1.Print Tab(4 * j); a(i, j); Next j Picture1.Print Next i ReDim Preserve a(n, n) Command2.Enabled = True Command3.Enabled = True End Sub Private Sub Form_Load() Command2.Enabled = False Command3.Enabled = False End Sub 以上为应用程序初始化及产生矩阵的程序代码,变换为上三角及下三角矩阵的程序代码见后页。

变换为上三角及下三角矩阵的程序代码: Private Sub Command2_Click() Picture1.Cls For i = 1 To n For j = i To n a(i, j) = (i - 1) * n + j Picture1.Print Tab(4 * j); a(i, j); Next j Picture1.Print Next i End Sub I=1,j=1 to 5 A(1,1) A(1,2) A(1,3) A(1,4) A(1,5) I=2 ,j=2 to 5 A(2,2) A(2,3) A(2,4) A(2,5) I=3 ,j=3 to 5 A(3,3) A(3,4) A(3,5) I=4 ,j=4 to 5 A(4,4) A(4,5) I=5 ,j=5 to 5 A(5,5)

Private Sub Command3_Click() Picture1.Cls For i = 1 To n For j = 1 To i a(i, j) = (i - 1) * n + j Picture1.Print Tab(4 * j); a(i, j); Next j Picture1.Print Next i End Sub I=1,j=1 to 1 A(1,1) I=2 ,j=1 to 2 A(2,1) A(2,2) I=3 ,j=1 to 3 A(3,1) A(3,2) A(3,3) I=4 ,j=1 to 4 A(4,1) A(4,2) A(4,3) A(4,4) I=5 ,j=1 to 5 A(5,1) A(5,2) A(5,3) A(5,4) A(5,5)

例5-2用1~25的自然数生成1个5×5按自然排列的二维矩阵,并输出到Picture1上;然后将该矩阵循环上移一行,第一行元素换到最后一行,结果在Picture2上输出。程序运行界面如图所示。 程序代码: Private Sub Command1_Click() Dim a%(1 To 5, 1 To 5), t(1 To 5) As Integer Picture1.Print "生成的原始矩阵为:" & vbCrLf For i = 1 To 5 For j = 1 To 5 a(i, j) = 5 * (i - 1) + j Picture1.Print Tab(5 * (j - 1)); a(i, j); Next j Picture1.Print Next i Picture2.Print "变换后的矩阵为:" & vbCrLf For j = 1 To 5 '保存第一行数据于数组t() t(j) = a(1, j) For j = 1 To 5 a(5, j) = t(j) Next j For i = 1 To 5 Picture2.Print Tab(5 * (j - 1)); a(i, j); Picture2.Print Next i End Sub For i = 1 To 4 For j = 1 To 5 a(i, j) = a(i + 1, j) Next j Next i

5.2.4多维数组的声明和引用 我们把三维以上的数组统称为多维数组,在应用程序中,多维数组的使用与二维数组非常相似。 1.静态多维数组的声明   我们把三维以上的数组统称为多维数组,在应用程序中,多维数组的使用与二维数组非常相似。 1.静态多维数组的声明 声明格式:    Dim数组名(下标1,下标2,……,下标n)[As类型] 2. 静态多维数组的引用 引用多维数组元素的格式:    数组名(下标1,下标2,……,下标n) 说明: (1)下标个数决定数组的维数,最多60维(即n≤60)。 (2)每一维的元素个数=上界-下界+1;数组的元素个数=每一维的元素个数的乘积。