已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章 数组 静态数组 动态数组 数组的基本操作 控件数组 VB学习群 群号:46955413 备注:星期五晚上6102 数组的概念 数组:若干具有相同数据类型的数据集合 数组元素:数组中的基本单位构成 格式: Dim 数组名(下标)As 类型 下标:只能是常数,用以说明数组的维数 和每维的大小。 dim a(10) as interger ; a(1 to 5, 3 to 8) dim c(2,3) as interger; 缺省为Variant 类型 数组 101102103104105106 数组的分类 按数组的内存区开辟时间的不同分: 静态数组(Static) 动态数组(Dynamic) 数组 静态数组(定长数组):数组大小确定的数组。 动态数组(可变长数组):数组大小不确定,在程 序运行时分配存储空间。 数组的分类 按数组的维数分: 数组 一维数组:具有一个下标的数组 二维数组:具有两个下标的数组 多维数组:具有多个下标的数组 数组的下标 下标:即,数组的上下界,指明下标可以使用的最大值 和最小值,用以说明数组的维数和每维的大小。 格式如下: 下界 To上界 1)下标中如果出现上界,上界必须大于下界。-3 To 8 2)定义多维数组时,各下标之间用逗号分隔开 3)如果不指定下界 To,则数组元素下标的下界用 Option Base语句控制,如果没有用Option语句,下标 下界的缺省值为0 数组的下标 实例1:dim a%(10) 说明:数组a是一个一维整型数组,共 有11个数组元素,下标范围从010。 实例2:Dim b(3,4) as long 说明:数组b是一个二维长整型数组,第 一维的下标范围03,第二维的下标范 围为04,共分配45个空间 二维数组各元素的排列 b(0,0)b(0,1)b(0,2)b(0,3)b(0,4) b(1,0)b(1,1)b(1,2)b(1,3)b(1,4) b(2,0)b(2,1)b(2,2)b(2,3)b(2,4) b(3,0)b(3,1)b(3,2)b(3,3)b(3,4) 输出斐波那契级数的前20项 1,1,3,4,7,11,18, Private Sub Form_Click() Dim F(20) As Integer, I As Integer F(1) = 1 : F(2) = 1 第一、第二项为1 For I = 3 To 20 第三项起每项为前二项之和 F(I) = F(I - 2) + F(I - 1) Next I For I = 1 To 20 在窗体上输出 Print F(I); If I Mod 5 = 0 Then Print Next I End Sub 如果加入Option Base 1 程序需要怎么修改? Option语句 格式:Option Base n 功能:指定数组下标下界的缺省值 说明: 1)n为数组下标指定的下界,它只能是0或者1。如果 不使用该语句,系统默认下界值为0。 2)Option Base语句只能出现在窗体层或模块层,不 能出现在过程中,且必须位于数组定义之前。 3)如果定义多维数组,则下标的设定值对每一维都有 效。 数组下标测试函数 格式:Lbound(数组名,维) Ubound(数组名,维) 功能:Lbound函数返回数组中指定维的下界 Ubound函数返回数组中指定维的上界 1)格式中,维指数组中要测试的某一维数 2)对于一维数组来说,则,维可以省略。如 果测试多维数组,则不能省略。 数组下标测试函数 Option Base 1 Dim y(1 To 22,2 to 20,-3 to 6) Dim x(20) Print Lound(y,1),Ubound(y,1) Print Lound(y,2),Ubound(y,2) Print Lound(y,3),Ubound(y,3) Print Lound (x), Ubound (x) 问输出结果为多少? 数组的基本操作 1.数组的引用 2.数组的输入和输出 3.数组的赋值 数组的引用 数组的引用通常指对数组元素的引用,数组元素 的引用形式为: 数组名(下标) 说明:1.二维或者多维数组,引用时必须给出两个 或多个下标 a(1)(2) 2.引用数组元素时,数组元素的下标必须在 建立数组时指定的范围内,否则将发生“下标越 界”的情况。 数组的输入 1.使用Array函数 格式:数组变量名Array(数组元素值 ) 注意: 1.Array只能对一维数组进行初始化,不能 对二维数组进行初始化。 2.数组变量只能是变体(Variant)类型。 Option Base 1 Private Sub Form_Click() Dim a As Variant, b As Variant a = Array(1, 2, 3, 4, 5, 6) b = Array(“One“, “Two“, “Three“) For Each x In a Print x; “ “; Next x Print For i = 1 To UBound(b) Print b(i); “ “; Next i Print End Sub 数组的输入 2.使用循环语句 Option Base 1 Private Sub Form_Click() Dim a(10) As Integer For i = 1 To 10 注意数组从1开始 a(i) = Val(InputBox(“请输入10个数字“) Next i For Each x In a Print x; “ “; Next x End Sub 数组的输入 Dim A(5,5) For I=1 to 3 For j=1 to 4 A(I,J)=I*J Next J Next I For N=1 to 2 For M=1 to 3 Print A(M,N) Next M Next N A 1 2 3 4 2 4 B 1 2 3 4 6 8 C 1 2 3 2 4 6 D 1 2 3 6 3 6 For Each-Next语句 For EachNext语句专门用于数组操作 格式: For Each 成员 In 数组 循环体 Exit For Next 成员 For Each-Next语句 成员:是一个 变体变量(Variant),实际 代表了数组中得每个元素,它可以代表任 意类型得数组元素。 “数组”:是一个没有括号和上下界得数组 名。 For EachNext语句不能用于用户自定义 类型得数组,因为Variant不能包含用户自 定义类型。 Option Base 1 Private Sub Form_Click() Dim a(10) As Integer For i = 1 To 10 a(i) = Int(100 * Rnd) Next i For Each x In a Print x; “ “; Next x End Sub Option Explicit Option Base 1 Private Sub Commandl_Click() Dim A(2,2) As Integer,B(2,2) As Integer,C(2,2)As Integer Dim n As Integer, m As Integer, S As Integer, k As Integer A(1,1) =3:A(1,2) =1:A (2, 1)=-2:A(2, 2)=5 B(1,1) =2:B(1,2)=-3:B(2,1)=6:B(2, 2)=1 For n=1 TO 2 For m=1 TO 2 S=0 For k=l TO 2 S=S+A(n,k) *B(k,m) C(n,m)=S Next k Next m Next n For n=1 TO 2 For m=1 TO 2 Print C(n,m);Spc(3); Next m Print Next n End Sub (1)以下关于语句“Option Base1”正确的说法是( )。 (A)其功能是声明数组下标的默认上界 (B)其功能是定义动态数组 (c)其功能是声明数组下标的默认下界 (D)其功能是定义静态数组 (2)以于关于语句“Option Explicit”正确的说法是( )。 (A)表明此模块没有通用过程 (B)表明此模块的通用过程不能被其他模块调用 (c)表明此模块变量不声明可以直接使用 (D)表明此模块变量必须先声明后使用 (3)程序运行完成后,Print C(n,m)语句输出的结果是( )。 (A)0 -16 (B)12 26 (C)26 11 (D)12 -8 -13 11 -8 11 12 -8 26 11 动态数组(Dynamic) 动态数组:仅在运行时开辟内存区,当程序不运 行时,动态数组不占据内存空间。 格式:ReDim Preserve数组名(下标) as 类型 功能:重新定义动态数组,按定义的上下界重新 分配存储单元。 动态数组(Dynamic) 说明: 1)动态数组的定义分两步: 1.先在窗体层、标准模块或过程中用 Dim或Public声明一个没有下标的数组(括 号不能省略),这样就将数组声明为动态 数组。 2.在过程中用ReDim语句定义带下标的 数组,给数组指定实际的元素个数。 动态数组(Dynamic) ReDim语句是一个可执行语句,并且只能 出现在过程中。 动态数组的下标用变量来表示。也可以是 有确定值的变量。 声明动态数组时并不指定数组的维数,数 组的维数由第一次出现的ReDim语句指定 。 Preserve选项:当改变原有数组最末维的 大小时,使用此关键字可以保持数组中原 来的数据。 动态数组(Dynamic) 如果使用了 Preserve 关键字,就只能重定义数 组最末维的大小,且根本不能改变维数的数目。 例如,如果数组就是一维的,则可以重定义该维 的大小,因为它是最末维,也是仅有的一维。不 过,如果数组是二维或更多维时,则只有改变其 最末维才能同时仍保留数组中的内容。下面的示 例介绍了如何在为已有的动态数组增加其最末维 大小的同时而不清除其中所含的任何数据。 ReDim X(10, 10, 10) . . . ReDim Preserve X(10, 10, 15) 动态数组举例 Option Explicit Option Base 1 数组下标从1开始 Private Sub Command1_Click() Dim i As Integer Dim MyArray() As Integer: Rem 声明动态数组。 ReDim MyArray(5): Rem 分配 5 个元素。 For i = 1 To 5 循环 5 次。 MyArray(i) = i 初始化数组。 Next i Print “第一次定义的动态数组:“ For i = 1 To 5 Print MyArray(i); Next i Print End sub 控件数组 控件数组由一组相同的控件组成,这些控件 共用一个数组名,具有相同的属性,数组 中的每个控件系统都指定一个唯一的索引 号,即控件数组的下标。 列表框和组合框 列表框主要属性 List属性:用于列出列表框中的所有项目 格式: x$=列表框名.List(下标) 也可以改变列表框中的某一项的值。 格式: 列表框名list(下标)字符串 列表框 ListCount:用于返回在列表框中的列表项数只 能在运行时使用。 格式:列表框.ListCount ListIndex属性:当前选中的列表框项的索引, 表项在列表中的位置由索引值指定。第一项的索 引项为0。如果没有选择项目,ListIndex-1 Text属性:用于得到当前列表项的内容 列表框 Colunms属性:设置列表框按几列显示。 0按单列显示(默认)列表项较多时出现 垂直滚动条 1按单列显示,列表项较多时出现水平滚 动条 2按多列显示 列表框 Sorted属性:设置列表框中的各列表项是否按字 母数字自动排序,True为自动排序,False为不 自动排序(默认) MultiSelect属性:用于设置是否允许同时选择 多个列表项。 0每次只能选择一个项目 1允许通过鼠标单击或者按下空格键选择多个 项目 2为允许Shift单击鼠标或Shift+箭头键选择 连续多个项目,Ctrl单击鼠标可选择多个不连 续项目。 列表框的事件 列表框的方法 AddItem方法:用于在列表框中插入一个列表 框 格式:列表框.AddItem 项目字符串,索引值 Clear和RemoveItem方法:Clear方法和 RemoveItem方法都是用于删除列表项,Clear 方法用于清除列表框中的全部内容,而 RemoveItem方法每次只能删除一个项目。 格式:列表框.Clear 列表框.RemoveItem 索引值 列表框 例:利用列表框创建一个输入省市名称的界面, 并能将选择的省市名称加入到另一个列表框内。 Option Explicit Private Sub Command1_Click() List1.AddItem Text1.Text Text1.Text = “ End Sub Private Sub Command2_Click() List2.AddItem List1.Text Text2.Text = List2.ListCount End Sub 例题1 1.将列表框中添加1-10 2.显示列边框中的个数 3.显示列边框中具体某一个项的值 例题 1.随机生成10个100-1000之间的数 2.将10个数中是偶数的添加到列边框中 3.显示数字的个数与和 随机生成10个数 Dim a(9) As Integer Randomize For i = 0 To 9 a(i) = Int(901 * Rnd + 100) Next i 组合框 Style属性:用于确定组合框的类型和显示方式 。 取值为0、1、2 0下拉组合框(默认),由一个文本框和一个 下拉列表框组成,用户可以在文本框中输入也可 单击列表框来选择列表项。 1简单组合框,由一个文本框和一个标准列表 框组成,列表框的下拉项一直展开显示在屏幕上 。 2下拉列表框,不允许用户输入文本,只能从 下拉列表框选择。 单选框 1.Value 属性:设置单选按钮是否被选中,1 为选中 2.Click事件:鼠标单击事件 复选框 1.Value 设置复选框是否被选中,1为选中 2.Click事件 排序算法 1.比较交换法排序 2.选择法排序 3.冒泡法排序 数字的交换问题 如何实现a、b两个数字的交换 T=a A=b B=t 比较交换法排序(交换值) 基本方法: 对n个数按升序排列,先将第一个数依次与第 二个数到第n个数逐一比较,如果a(1)a(j)( j=2,3,n),则交换a(1),a(j)的值。从而将最 小值存放在a(1)中。 然后将第二个数依次与第三个数到第n个数逐 一比较,如a(2)a(j)(j=3,4n),则交换a(2), a(j)的值。将第二个数到第n个数中最小值放在 a(2)中。 重复上述步骤。 Option Explicit Option Base 1 Private Sub Form_Click() Dim a As Variant Dim n As Integer, i As Integer, j As Integer, t As Integer Dim ii As Variant a = Array(56, 90, -123, 58, 5, 10, 100, 54, 66) n = UBound(a) Print “排序前的10个数为:“ For Each ii In a Print ii; “ “; Next ii Print For i = 1 To n - 1 For j = i + 1 To n If a(i) a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i Print “排序后的10个数为:“ For i = 1 To n Print a(i); “ “; Next i End Sub 比较交换法排序 For i = 1 To n -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时占用土地租赁协议
- 快件赊销协议书
- 2024建设工程补充合同范本
- 求职意向书样本-书信范本
- 2024幼儿园保安聘用合同
- 劳务施工安全协议书范本2024年
- 浙江省初中名校七年级上学期语文期中试卷5套【附答案】
- 吉林省杂粮采购合同
- 4.1 夯实法治基础 (大单元教学设计) 2024-2025学年统编版道德与法治九年级上册
- 家庭雇佣保姆合同模板
- 煤矿皮带智能化集控系统PPT教学讲授课件
- 个人财务管理系统的设计与实现--论文
- 分数乘除法整理复习(课堂PPT)
- 杭州会展业发展与对策研究文献综述
- 小学六年级英语上册《Unit 1 How can I get there》教案
- 完整版方法验证报告模板最终
- 电力管道资料表格(共30页)
- 大班科学活动教案《豆豆家族》含PPT课件
- 【精品试卷】部编人教版(统编)一年级上册语文第一单元测试卷含答案
- 金属有机化学ppt课件
- 数学说题稿(共4页)
评论
0/150
提交评论