数组与自定义类型.ppt_第1页
数组与自定义类型.ppt_第2页
数组与自定义类型.ppt_第3页
数组与自定义类型.ppt_第4页
数组与自定义类型.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.1 数组的概念,5.2 数组的基本操作,5.3 数组应用举例,5.4 控件数组,5.5 自定义数据类型,数组与自定义数据类型,第 5 章,第 2 页,方法1:把10个学生的成绩均赋值给一个变量。,Dim i%, s!, a!, avg!, p% For i = 1 To 10 a = Val(InputBox(“Enter a number“) s = s + a next i avg = s / 10 Print avg p = 0 For i = 1 To 10 a = Val(InputBox(“Enter a number“) If a avg Then p = p + 1 next i Print “高于平均分“ & avg & “的学生共有“ & p & “人“,引例:求一个班10个学生的平均成绩,统计高于平均分的人数。,第 3 页,分析表明: 程序中采用一个变量a,只能保存最后一个学生成绩,无法保存所有学生成绩,因此,在统计高于平均分人数时,不得不重复输入成绩, 这种方法存在着: (1)重复录入数据:用户输入数据的工作量成倍增加; (2)容易出错:若本次输入的成绩与上次不同,则统计的结果不正确。,第 4 页,如果使用:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,Dim s!,p%, Avg!, A1!,A2!,A3!,A4!,A5!,A6!,A7!,A8!,A9!,A10! A1=Val(InputBox(“ ) A2=Val(InputBox(“) A3=Val(InputBox(“) A4=Val(InputBox(“) A5=Val(InputBox(“) A6=Val(InputBox(“) A7=Val(InputBox(“) A8=Val(InputBox(“) A9=Val(InputBox(“) A10=Val(InputBox(“),方法2:用多个变量保存每个学生成绩。,s=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10 Avg=s/10 P=0 Print “10个学生平均分数为“ & Avg IF A1Avg Then pp+ IF A2Avg Then pp+ IF A3Avg Then pp+ Print “高于平均分“ & Avg _ & “的学生共有“ & p & “人“,第 5 页,如果使用:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,方法2:用多个变量保存每个学生成绩。,优点:能够保存每位学生的成绩,不用重新输入,采用定义多个变量的方法虽然解决了成绩保存的问题,但当数据量较大时,程序编写麻烦,不易实现或者无法实现。 如果将A后面的下标改为i,使用循环为其赋值程序会更简洁! 解决方法:利用数组可以很方便的实现!,第 6 页,方法3:用数组实现,Dim a(1 to 10) As Integer, s!, Avg!, p%, i% 数组定义 s = 0 求成绩总和 For i = 1 To 10 a(i)= InputBox(“输入第“ & i & “位学生的成绩“) s = s +a(i) next i Avg = s / 10 求平均成绩 p=0 For i = 1 To 10 统计高于平均分人数 If a(i)=avg Then p=p+1 next i Print “高于平均分” & Avg “的学生共有” & p “人”,结论: 数组能始终保持输入的数据,一次输入,多次使用。 使用数组,能在程序中引入循环,简化程序编写。,第 7 页,5.1 数组,1、数组的有关概念 (1)数组:是一个由多个同类型变量组成的数据集合,简单的讲就是一组同类型的变量。 (2)数组名:这组变量有统一的名称,就是数组名。 (3)数组元素:构成数组的成员。每个数组元素和一个普通变量一样能存放一个数据。 (4)下标:用来标识数组中的每一个元素的序号。 如,有一个数组a(n),数组元素可分别表示为: a(1), a(2), a(3), a(4),第 8 页,5.1 数组,2、数组的特点 (1)数组由若干个数组元素组成,数组元素的数据类型一致。 (2)数组元素是有次序存放的,下标代表它在数组中的位置。 (3)数组中各元素之间有内在联系,在内存中占连续的一段存储单元。,第 9 页,3、数组的分类 (1)按照定义时数组元素个数确定与否,数组可分为: 静态数组:定义时数组元素的个数就已经确定(大小不可以调整) 动态数组:定义时数组元素的个数不确定,在程序运行时根据需要才确定数组元素的多少(大小多少可以调整) (2)按照数组元素下标的个数,数组可分为: 一维数组:数组元素有一个下标 二维数组:数组元素有两个下标 多维数组:数组元素有多个下标,第 10 页,1.一维数组,(A(0) A(1) A(2) A(3) A(4),一、按下标的个数分,2.二维数组,5.1 .1 数组的分类,3.多维数组,Dim A(1,2) As Integer,Dim A(4)As Integer,第 11 页,二、按声明时数组元素个数是否确定分,1、静态数组,特点:定义时数组元素的个数就已经确定(多少不可以调整),2、动态数组,特点:定义时数组元素的个数不确定,在程序运行时根据需要才确定数组元素的多少(多少可以调整),第 12 页,1、静态数组,1)一维数组,功能:定义一个一维数组,并初始化所有数组元素。,格式:Dim 数组名(下界 To 上界)As 数据类型,作用:定义“(上界-下界+1)”个数组元素,这些元素 按照下标由小到大的顺序连续存储在内存中。,第 13 页,说明 数组名的定义同变量,以字母开头,不能使用VB中的关键字,但尽可能有意义。例如: Dim x(10) As Single 正确 Dim Sub(20) As Long 错误 Dim Math(1 To 8) As Single 正确 Dim 5X(20) As Long 错误,格式:Dim 数组名 (下界 To 上界)As 数据类型,第 14 页,说明: 静态数组的维界定义必须为常数或符号常量,或是常量表达式,不能是变量或其表达式。例如: Const k as integer=10 Dim x(10) As Single 正确 Dim a(k) as long 正确 Dim B(5+3) as String 正确 而 Dim x(n) As Single 错误,格式:Dim 数组名 (下界 To 上界)As,第 15 页, 维界的形式是: 下界 To 上界 1、当下界 To缺省时,默认值为0 2、下界上界 3、数组元素的个数是:上界下界1 4、维界说明如果不是整数,将按四舍五入处理。,Dim A(1 To 9.8) As Single 定义了有10个元素的数组 A(1)、A(2)、A(9)、A(10),Dim B(10) As String 定义了有11个元素的数组 B(0)、B(1) B(9)、B(10),Dim A(5 To 6+2) As Integer 定义了有4个元素的数组,7.1 .2 数组的定义说明,格式:Dim 数组名 (下界 To 上界)As,第 16 页, As 用来说明数组元素的类型,缺省为变体型(Variant)。,例如: Dim a(12) As Single 单精度型,下标范围为012. Dim x!(1 To 50 ) 单精度,下标范围为150. Dim y(1 To 10 ) 变体型,下标范围为110.,格式:Dim 数组名 (下界 To 上界)As,第 17 页, 静态数组必须先声明后使用。,声明数组后,各数组元素的初值与声明普通变量相同 1、置数值型数组中的全部元素值为0 2、置字符串数组和变体数组中的元素值为空串 3、布尔型数组元素值初始化为False,注: 一维静态数组包含数组元素的个数必须确定!,可以使用“Option Base n”来重新定义数的下界,格式:Option Base n 说明:n为数组下标的下界,只能是0或1。 在模块的通用部分说明,第 18 页,说明: 和一维数组相同,维界由上界、下界组成,格式: Dim 数组名(下界1 to 上界1,下界2 to 上界2) As 数据类型,1、静态数组,2)二维数组,和一维数组相同,可以使用“Option Base n”来重新定义数的下界 二维数组一般可以看成一个二维表、行列式、矩阵、或平面坐标, 通常用第一维表示数组有多少行、第二维表示数组有多少列。,第 19 页,静态数组注意事项 (1)维说明中下界和上界只能取直接常量或直接常量表达式,符号常量和符号常量表达式,不能为变量或包含变量的表达式。 (2)下界维说明可以省略,默认从0开始 Dim x(6) As String * 6 (3)维说明中使用的常量可以为小数,系统自动四舍五入。 Dim x(1 To 4.3 + 2) As Integer,定义数组x是有x(0)到x(6)连续的7个数组元素,每个元素可以存储6个字符,Dim n As Integer n=10 Dim a(1 To n) As Single,Const n As Integer = 6 Dim x(1 To n) As Double Dim y(1 To n + 6),第 20 页,静态数组注意事项 (4)用“Option Base 1”可设定数组元素下界为1,将下界默认值从0改为1。 (5)一维静态数组在同一过程中只能声明一次 (6)声明数组后,各数组元素的初值与声明普通变量相同。 (7)声明数组和声明变量一样,数组也有作用范围。,Private Sub Command1_Click() Dim a(1 To 6) As Integer Dim a(8) As Single End Sub,第 21 页,Pravate Sub Form_Click() Print A(2) End Sub,(8)数组必须先声明明,后使用,第 22 页,7.2 数组元素的引用,数组元素可以通过数组名加下标的方式引用,他可以通过下标变量进行批量数据的计算,用法与一般变量相同 例如:a(1)=3.14259 x(1,2)=100 下面的语句可以为多个数组元素赋值,dim a%(1 to 20) For i=1 to 20 a(i)=2*i-1 next i,dim p%(10) For k=0 to 10 p(k)=k next k,第 23 页,例5-1 用InputBox函数向数组a中输入10个整数,找出其中最大值、最小值以及他们对应的数组元素的下标,Private Sub Form_Click() Dim a%(1 To 10), i%, max%, min%, k%, p% For i = 1 To 10 a(i) = Val(InputBox(“a(“ Next i Print max = a(1): p = 1 min = a(1): k = 1,第 24 页,For i = 2 To 10 If a(i) max Then max = a(i): p = i End If If a(i) min Then min = a(i): k = i End If Next i Print “max=a(“ & p & “)=“ & max Print “min=a(“ & k & “)=“ & min End Sub,第 25 页,例5-2 用Rnd函数产生50,100区间的随机整数放入数组,计算平均值,输出大于平均值的所有的数及下标。,Private Sub Form_Click() Dim a(1 To 30) As Integer, i%, p! p = 0 For i = 1 To 30 a(i) = Int(51 * Rnd + 50) p = p + a(i) Next i p = p / 30 Print “平均值是:“; p For i = 1 To 30 If a(i) p Then Print “a(“ a(i) Next i End Sub,第 26 页,例5-3 二维数组 用Rnd函数随机产生30个同学4门课程的成绩放到一个二维数组中,计算并输出每个同学的平均成绩 分析: 需要引进一个有30行,4列的二维数组;用循环结构给数组变量赋值、计算、输出,第 27 页,Private Sub Form_Click() Dim s(30, 5) As Integer, i%, j% For i = 1 To 30 For j = 1 To 4 s(i, j) = Int(51 * Rnd) + 50 s(i, 5) = s(i, 5) + s(i, j) Next j s(i, 5) = s(i, 5) / 4 Next i,第 28 页,Print “学号“, “数学“, “英语“, “物理“, “化学“, “总评“ For i = 1 To 30 Print i, For j = 1 To 5 Print s(i, j), Next j Print Next i End Sub,第 29 页,例5-4 用InputBox函数给一个四行四列的矩阵输入数据,然后交换矩阵中各元素行列位置(矩阵的转置),第 30 页,Private Sub Form_Click() Dim s(4, 4) As Single, x As Single, i%, j% For j = 1 To 4 For i = 1 To 4 s(i, j) = InputBox(“s(“ Next j Print Next i,第 31 页,For i = 1 To 4 For j = 1 To 4 x = s(i, j): s(i, j) = s(j, i): s(j, i) = x Next j Next i Print “交换后:“ For i = 1 To 4 For j = 1 To 4 (i) Print s(i, j); Next j Print Next i End Sub,第 32 页,5.1 数组的概述,静态数组不能解决的问题,有时候在写程序代码时并不知道要处理多少个数;,定义静态数组时又必须要确定数组元素个数;,我们可以在定义时将元素定义多一点;,但又会浪费宝贵的内存空间,而且,多少才算多啊!,能不能在写代码时先定义一个空数组,在用时根据实 际需要再确定大小呢?,有!VB允许动态定义数组!,第 33 页,5.1 数组的概述,2、动态数组,(1)声明时不说明数组元素个数的数组称为动态数组; (2)通常声明步骤有两步; 第一步:用Dim声明一个空数组; 第二步:在确定数组大小后再用ReDim确定大小 (3)也可以直接省略第一步而直用ReDim定义;,Private Sub Command1_Click() Dim a%(), b!(10), n% n = InputBox(“请输入要处理的数据个数“) ReDim a(n) End Sub,第 34 页,7. 动态数组,(1)声明时不说明数组元素个数的数组称为动态数组; (2)通常声明步骤有两步; 第一步:用Dim声明一个空数组; 第二步:在确定数组大小后再用ReDim确定大小 (3)也可以直接省略第一步而直用ReDim定义;,Private Sub Command1_Click() Dim n% n = InputBox(“请输入要处理的数据个数“) ReDim a(n) End Sub,第 35 页,例5-5 用Rnd产生n个0到100之间的随机整数放到a数组中,并计算平均值,将大于平均值的数和下标输出。,Option Base 1 Private Sub Form_Click() Dim a() As Integer, i%, p! n = InputBox(“请确定数组的大小“) ReDim a(n) For i = 1 To n a(i) = Int(Rnd * 101) p = p + a(i) Next i p = p / n Print “平均值=“; p For i = 1 To n If a(i) p Then Print “a(“ a(i) Next i End Sub,第 36 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i,第 37 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i,第 38 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i,n,6,第 39 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next i,n,6,a,0,0,0,0,0,0,第 40 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next i,n,6,a,1,2,3,4,5,6,第 41 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next i,n,8,a,1,2,3,4,5,6,第 42 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next i,n,8,a,0,0,0,0,0,0,0,0,第 43 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i) Next i,第 44 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i,n,8,a,第 45 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i,n,8,a,0,0,第 46 页,7. 动态数组,(4)利用Preserve关键字可以在扩充或压缩数组大小时保留原来的值。,Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i) Next i,第 47 页,8. 获得数组下标上下界的函数,(1)UBound(数组名),可以获得指定一维数组的下标上界; (2)LBound(数组名),可以获得指定一维数组的下标下界; (3)UBound(数组名,1),可以获得多维数组第1维的下标上界; (4)Lbound(数组名,N),可以获得多维数组第N维的下标下界。,第 48 页,例5-6 定义一个动态数组来存放学生名单,并可以在其中随时添加新的学生姓名。,Dim a() As String Private Sub Form_Load() Dim n As Integer n = 2 ReDim a(n) a(0) = “张三“ a(1) = “李四“ a(2) = “王五“ End Sub,第 49 页,Private Sub Form_Click() m = UBound(a) ReDim Preserve a(m + 1) a(m + 1) = InputBox(“请输入姓名“) For i = LBound(a) To UBound(a) Print a(i) Next i End Sub,第 50 页,9. 数组元素的遍历,对一个数组中所有数组元素的执行同一个操作,称之为数组元素的遍历,这是对数组元素最常见的操作,一般要通过循环完成,一维用单循环:,一维数组赋值 For i = LBound(a) To UBound(a) a(i) = Int(Rnd() * 100) Next i 一维数组输出 For i = LBound(a) To UBound(a) Print a(i) Next i,第 51 页,9. 数组元素的遍历,对一个数组中所有数组元素的执行同一个操作,称之为数组元素的遍历,这是对数组元素最常见的操作,一般要通过循环完成,二维用双循环:,二维数组赋值 Dim a%(3, 4), i%, j% For i = LBound(a, 1) To UBound(a, 1) For j = LBound(a, 2) To UBound(a, 2) a(i, j) = Int(Rnd() * 100) Next j Next i,第 52 页,10. 用数组解决问题的步骤,(1) 根据要求声明数组; (2) 为各数组元素赋值,一般通过遍历完成; (3) 处理各数组元素中的数据;一般通过遍历完成 (4) 输出处理结果,第 53 页,5.2 数组元素的赋值方法,1. 用循环逐一为数组元素赋有规律的数据 示例:声明一个一维数组,给下标为奇数的元素赋值为0,下标为偶数的元素赋值为1。,Private Sub Command1_Click() Dim a%(1 To 10), i% For i = 1 To 10 a(i) = IIf(i / 2 = i 2, 1, 0) Next i End Sub,第 54 页,用循环逐一为数组元素赋有规律的数据 例7-7 声明一个二维数组,给两条对角线元素赋值为1,其它元素赋值为0。,Private Sub Command1_Click() Dim a%(1 To 10, 1 To 10), i%, j% For i = 1 To 10 For j = 1 To 10 If i = j Or i + j = 11 Then a(i, j) = 1 Else a(i, j) = 0 End If Next j Next i End Sub,优点:快速 缺点:数据必须有规律,第 55 页,2. 用Array函数一次为所有元素赋值 (1)只能给一维动态变体类型数组各元素赋值; (2)一次给全部数组元素赋值,快速高效; (3)如果数组尚未声明,数组元素的个数由列表中的数据个数决定。 格式 : 数组名=Array(数组元素值列表),例7-8 为二维数组数组赋初值,第 56 页,Private Sub Form_Click() Dim x(), a%(1 To 3, 1 To 3), i%, j% x = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For i = LBound(x) To UBound(x) a(1 + i 3, 1 + i Mod 3) = x(i) Next i For i = 1 To 3 For j = 1 To 3 Print a(i, j); Next j Print Next i End Sub,第 57 页,3. 用Inputbox为元素逐一赋值 (1)与普通变量赋值相同,可以在程序运行时再输入要处理的数据,增强了程序的灵活性; (2)每为一个元素赋值时都要暂停程序运行,效率低; (3)输入的数据一旦有错,修改只能重头再来。,第 58 页,4. 用Split函数为数组各元素一次性赋值 数组名=Split(字符串表达式,分隔符) (1)只能为字符型数组赋值; (2)数据之间要有明确的、统一的分隔符; 例: Nam=Split(“王强,李军,刘平,王晶”,“,”) Score=Split(Text1.text,”) 说明:字符串表达式可以是任何字符串;分隔符可以是各种字符,用以分隔数据,第 59 页,例7-9 用文本框输入一组英文单词,统计单词个数,找出排在最前面和最后面的单词。,Option Base 1 Private Sub Command1_Click() Dim a() As String, i%, n%, F$, E$ a = Split(Text1.Text, “ “) n = UBound(a) F = a(1): E = a(1) For i = 2 To n If a(i) E Then E = a(i) Next i Label2.Caption = F Label4.Caption = E Label6.Caption = n End Sub,Split函数赋值的数组最小下标与Option Base n 无关,数组元素下标总是从零开始,第 60 页,5.3 输出数组元素的方法,1. 一维数组 一般通过单层循环将各数组元素输出在一行或一列,如果数据量大,可以使用分行控制输出在一屏中。 2. 二维数组 一般通过双层循环将各行列元素按行列输出,代码如下:,For i = LBound(a, 1) To UBound(a, 1) 行循环 For j = LBound(a, 2) To UBound(a, 2) 列循环 Print a(i, j); 由行号和列号确定输出的元素 Next j Print 一行输出结束后换行 Next i,第 61 页,例5-10:假设有一个数组,内有10个元素,按照由小到大顺序将他们进行排列。(用Rnd产生这十个元素),第一种方法:比较交换法,Private Sub Form_Click() Dim a(1 To 10) As Integer, i%, j%, t% Print “排序前:“ For i = 1 To 10 a(i) = Int(Rnd * 51) + 50 Print a(i); Next i Print,7 6 8 10 20 2 3 19 5,第 62 页,For i = 1 To 9 For j = i + 1 To 10 If a(i) a(j) Then t = a(i): a(i) = a(j): a(j) = t End If Next j Next i Print “排序后:“ For i = 1 To 10 Print a(i); Next i End Sub,缺点:交换次数太多,效率低!,第 63 页,第二种方法:选择排序法,在整个过程中只记录比较结果,并不立即交换数据,当一轮比较结束后再进行交换。,For i = 1 To 9 p = i For j = i + 1 To 10 If a(p) a(j) Then p = j Next j If p i Then t = a(i): a(i) = a(p): a(p) = t End If Next i,第 64 页,例5-11:给定一组数15,8,4,13,6,10,17,1,从键盘输入一个数,用顺序查找法找出该数在数组总的位置,Option Base 1 Dim a(), m%, n%, i% Private Sub Form_Load() Show a = Array(15, 8, 4, 13, 6, 10, 17, 1) m = LBound(a) n = UBound(a) Print “数组元素如下:“ For i = m To n Print a(i) Next i Print End Sub,Show是窗体的一个方法,省略的话在窗体的Load事件中要用print方法输出的内容将看不到!,第 65 页,Private Sub Form_Click() Dim x%, p As Boolean x = InputBox(“请输入要查找的数!“) p = False For i = m To n If a(i) = x Then p = True: Exit For Next i If p = True Then Print “在数组中的第“ & i & “位找到了该数!“ Else Print “没有在数组中找到这个数!“ End If End Sub,第 66 页,例5-12 将由键盘输入的一个数据插入到一个排好序的数列中,使其仍然保持有序。,Dim a() Private Sub Form_Load() a = Array(1, 3, 5, 7, 9, 10, 12, 14, 16, 18) Show Print “初始数据:“ For i = 0 To UBound(a) Print a(i); Next i Print End Sub,第 67 页,Private Sub Form_Click() Dim x%, i%, t% x = InputBox(“请输入要插入的数!“) ReDim Preserve a(UBound(a) + 1) For i = 0 To UBound(a) - 1 If x a(i) Then t = x: x = a(i): a(i) = t End If Next i a(i) = x Print “新的序列:“ For i = 0 To UBound(a) Print a(i); Next i Print End Sub,第 68 页,i = UBound(a) - 1 Do While i = LBound(a) If a(i) x Then a(i + 1) = a(i): i = i - 1 Else Exit Do End If Loop a(i + 1) = x,方法二:,第 69 页,例5-13 用Rnd函数产生一个4行5列的二维数组,找出最大数组元素和他所在的行号和列号。 分析: 产生一个二维数组; 输出产生的二维数组; 找最大值; 输出结果。,第 70 页,Private Sub Form_Click() Dim a%(1 To 4, 1 To 5), Max%, L%, H% For i = 1 To 4 For j = 1 To 5 a(i, j) = Int(Rnd * 101) Next j Next i For i = 1 To 4 For j = 1 To 5 Print a(i, j); Next j Print Next i Max = a(1, 1): L = 1: H = 1 For i = 1 To 4 For j = 1 To 5 If a(i, j) Max Then Max = a(i, j) H = i L = j End If Next j Next i Print “最大的数组元素是a(“ & H & “,“ & L & “)=“ & Max End Sub,第 71 页,例5-14 找二维数组的鞍点。 鞍点:某个数既是他所在行的最大值,又是他所在列的最小值,该数称为该数组的鞍点。,Dim a%(1 To 4, 1 To 4), p%, i%, j%, n% Private Sub Form_Load() For i = 1 To 4 For j = 1 To 4 a(i, j) = InputBox(“请输入数组元素!“) Next j Next i Show Print “该数组为:“ For i = 1 To 4 For j = 1 To 4 Print a(i, j); Next j Print Next i End Sub,第 72 页,Private Sub Form_Click() For i = 1 To 4 p = 1 For j = 2 To 4 If a(i, j) a(i, p) Then p = j Next j For n = 1 To 4 If a(i, p) a(n, p) Then Exit For Next n If n 4 Then Print “第“ & i & “行有鞍点!此点为:a(“ & i & “,“ & p & “)“ Else Print “第“ & i & “行无鞍点!“ End If Next i End Sub,第 73 页,1. 基本概念 控件数组是指在同一个窗体上、拥有相同对象名、相同事件过程的一组同类型控件。 控件数组中的每一个控件的Name属性值相同,每个控件由其Index(索引)属性的值(即控件数组元素的下标)惟一地确定,例如:第个控件数组元素的索引号为,第个控件数组元素的索引号为1,依次类推。 控件数组中每个元素的其他属性可以单独设置。控件数组中元素个数受系统资源的限制,并且最大的Index属性值不能超过32 767。一个控件数组中至少要有一个控件。,5.4 控件数组,第 74 页,2、建立控件数组的方法,第 75 页,步骤:,创建一个新的工程,把窗体的Caption属性改为“计算器”。 使用常规方法在窗体上放置控件数组中的第一个按钮。然后把按钮的Caption属性改为“0”。 选择这个按钮,然后单击“编辑”菜单中的“复制”菜单项 选择“编辑”菜单中的“粘贴”命令.Visual Basic显示出一个消息框,询问是否要创建控件数组,单击“是”。窗体上会添加一个与已有按钮外观相同的新按钮。 重复执行上一步骤,添加多个按钮。这时,Visual Basic不会再询问。多次粘贴到窗体上的按钮可能相互重叠在一起,应该及时地把它们移开,按粘贴的前后顺序排列在窗体上。,第 76 页,注意:选择控件数组中任意一个按钮,在属性窗口中会发现,它们的Name属性都是一样的,它们的Index属性的值各不相同,这是数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论