第7章使用数组.ppt

上传人:sccc 文档编号:5116544 上传时间:2023-06-05 格式:PPT 页数:101 大小:301.52KB
返回 下载 相关 举报
第7章使用数组.ppt_第1页
第1页 / 共101页
第7章使用数组.ppt_第2页
第2页 / 共101页
第7章使用数组.ppt_第3页
第3页 / 共101页
第7章使用数组.ppt_第4页
第4页 / 共101页
第7章使用数组.ppt_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《第7章使用数组.ppt》由会员分享,可在线阅读,更多相关《第7章使用数组.ppt(101页珍藏版)》请在三一办公上搜索。

1、第7章 使用数组,Visual Basic 程序设计教程,Visual Basic程序设计教程,2,本章介绍:构造结构类型数组列表框组合框一些典型算法,Visual Basic程序设计教程,3,数组(Arrary)是构造的一种新的数据表达。数组是一组具有相同变量名和类型的数据(叫做数组元素)的连续存储单元。数组中包含了一个或多个元素下标给出了数组中元素的顺序数组和循环结构配合,使数据处理变得容易。,7.1 概述,Visual Basic程序设计教程,4,【例7-1】设计程序,如图。对一批马拉松运动员按成绩(单位:小时)排名次。控件:2个标签2个列表框1个命令按钮,7.2 给运动员排名次,Vis

2、ual Basic程序设计教程,5,“输入数据并排名”按钮作用:输入运行员人数输入各运动员的姓名和成绩左列表框放排序前的数据右列表框放排序后的名次数据。事件:主要是Command1的Click事件,Visual Basic程序设计教程,6,排序又称分类。有多种方法:选择分类法、冒泡分类法等。对n个数a(1)a(n),采用选择分类法的算法是:先在n个数中选最小数,放在第1个数组元素中。取第1个数,与后面n-1(即2到n)个数逐个比较。若第1个数大,则a(1)与参与比较的元素中的值进行互换再将互换后的第1个数与剩下的数据比较,直到最后。,Visual Basic程序设计教程,7,再在第2至n个元素

3、中,选最小数,放在第2个数组元素中。取第2个数,与后面n-2(即3到n)个数逐个比较。若第2个数大,则与数组元素中的值进行互换,直到最后。重复以上步骤,直至在最后两个数中选取最小数,放在第n-1个数组元素中。,Visual Basic程序设计教程,8,最后第n个元素已是最大数了。在第i至n个元素中,选最小数并放入a(i)的程序是:For j=i+1 To n将a(i)与a(i+1)a(n)逐一比较 If a(i)a(j)Then Temp=a(i):a(i)=a(j):a(j)=Temp 互换 Next j然后再将i从1循环到n-1,就可构成分类(排序)程序段。,Visual Basic程序设

4、计教程,9,Private Sub Command1_Click()Dim Name1()As String,Score()As Single 动态数组声明Dim TempName As String,TempScore As SingleDim N As Integer,i As Integer,j As IntegerN=Val(InputBox(“请输入运动员人数”,“输入”)ReDim Name1(N),Score(N)根据人数动态定义数组的大小List1.Clear:List2.Clear 清除两个列表框中数据For i=1 To N 输入姓名和成绩,放入左列表框 Name1(i)=

5、InputBox(请输入第&i&位运动员姓名,姓名)Score(i)=Val(InputBox(请输入第&i&位运动员成绩,成绩)List1.AddItem Name1(i)&Score(i),0 Next i,Visual Basic程序设计教程,10,For i=1 To N-1 开始按成绩从小到大排序 For j=i+1 To N If Score(i)Score(j)Then 同时交换姓名和成绩 TempName=Name1(i):Name1(i)=Name1(j):Name1(j)=TempName TempScore=Score(i):Score(i)=Score(j):Score

6、(j)=TempScore End If Next jNext iFor i=1 To N 将排序后数据及名次放入右列表框 List2.AddItem i&Name1(i)&Score(i)Next iEnd Sub,Visual Basic程序设计教程,11,7.3.1 如何声明一维数组只有一个下标的数组,称为一维数组。使用n(1n16)个下标的数组,称为维数组。数组在使用前必须先声明。格式:Dim 数组名(下标说明)As类型名,数组名(下标说明)As数据名,7.3 一维数组,Visual Basic程序设计教程,12,说明:数组名的命名方式与变量名一样,但不能和简单变量名重名。下标说明又称

7、维定义符,定义了这个维的大小。它有两种表示形式:上界下界 To 上界下界和上界必须使用数值型常量表达式下界和上界表示数组元素的下标的范围,Visual Basic程序设计教程,13,在缺省状态下,起始下标(下界值)为0Dim A(50),表示数组A有51个元素,即A(0)、A(1)、A(50)。Dim B(4 to 6),表示数组B有3个元素,即为B(4)、B(5)和B(6)。缺省下界值可用Option Base语句重新设置,格式:Option Base 0|1Option Base 1,表示将下界缺省值设置为1。,Visual Basic程序设计教程,14,类型名与变量声明时使用的一样,表示

8、被声明的这个数组的每一个元素都具有这种类型。省略类型名,则表示为Variant类型。例如,要声明两个包含50个元素的数组,一个存放姓名,为字符串型,一个存放年龄,为整型,则声明语句为:Dim Name1(50)As String,Age(50)As Integer一般情况下,它们实际各包含元素51个。,Visual Basic程序设计教程,15,7.3.2 使用一维数组使用数组包括:元素的引用、初始化及输入输出。1引用数组元素引用格式为:数组名(下标)数组名应与声明时的数组名相同下标必须用括号括起来,不能把Score(1)写成Score1。下标应为数值型的表达式,允许出现变量下标值应在下界和上

9、界之间,否则出错。如,可用:A(2)、A(i)、A(k*2)等访问元素,只要下标不越界,Visual Basic程序设计教程,16,2给数组元素赋值数组元素的用法,与简单变量用法一样凡是可用简单变量的地方,都可用同一类型的数组元素 A(k*2)=k*100:S(i)=浙江大学&计算机学院For i=1 To 50 A(i)=iNext i,Visual Basic程序设计教程,17,3运行时通过输入赋值通过文本框:S(5)=Text1.Text通过输入对话框对一批数组元素赋值For i=1 To 50 A(i)=Val(InputBox(请输入数据)Next I,Visual Basic程序设

10、计教程,18,4使用Array函数对数组所有元素赋初值Array函数的使用格式是:Array(表达式表)表达式表中各表达式用逗号间隔Array函数返回含有数组的Variant类型。使用Array函数前,必须先将数组名定义为Variant类型。Dim C,B As Integer,i As Integer 相当于Dim C As Variant,.B=100C=Array(3,4+B,5)For i=0 To 2:Print C(i),:NextArray函数根据表达式个数,确定数组的元素个数,Visual Basic程序设计教程,19,5UBound函数和LBound函数这两个函数的作用是获得

11、数组上界和下界对于一维数组,它们的基本格式为:UBound(数组名)和 LBound(数组名)For i=LBound(C)To UBound(C):Print C(i),:Next,Visual Basic程序设计教程,20,6输出一维数组输出个别元素,直接使用如Print A(5)的句子输出一批数组元素,往往使用循环:For i=1 To 50 Print A(i),If i Mod 5=0 Then Print 换行Next I7访问数组访问数组中各元素一般采用循环。,Visual Basic程序设计教程,21,【例7-2】输入30位同学的编号和成绩,求他们的平均成绩,并输出高于平均分的

12、同学编号和成绩,以及这些同学的人数。程序思路:第一步,声明两个大小至少为30的一维数组ID和Score,使ID(i)和Score(i)表示第i位同学的编号和成绩;,Visual Basic程序设计教程,22,第二步,输入30位同学的编号和成绩;第三步,计算平均成绩;第四步,将每位同学的成绩与平均成绩比较,发现大于或等于平均成绩的输出编号和成绩,并计数;第五步,输出统计人数。,Visual Basic程序设计教程,23,7.3.2 使用一维数组-【例7-2】Private Sub Command1_Click()Dim ID(30)As Long,Score(30)As Integer,i As

13、 IntegerDim Average As Single,Count As IntegerFor i=1 To 20 开始输入 ID(i)=Val(InputBox(请输入第&i&位编号:,)Score(i)=Val(InputBox(请输入第&i&位成绩:,)Next iAverage=0 开始计算平均分For i=1 To 30 Average=Average+Score(i)Next i,输入数据和计算平均分可同时进行。这样可以去掉一次并列的循环。,Visual Basic程序设计教程,24,Average=Average/30Print 平均分=;AverageCount=0 开始计

14、数,并输出高于平均分的数据For i=1 To 30 If Score(i)Average Then Print ID(i);Score(i),Count=Count+1:If Count Mod 5=0 Then Print 每行显示5人 End IfNext iPrint:Print 人数=;Count 输出人数End Sub,Visual Basic程序设计教程,25,7.3.2 使用一维数组【例7-3】编程:按编号顺序输入10位同学的编号和姓名,现班上又增一位同学,要求他的编号ID1和姓名Name1仍按编号顺序插入到数组ID和Named中。该题主要解决两个问题:一个是如何找到合适的位置

15、可以利用循环,与数组元素逐个比较若发现一个比ID1大的编号ID(i)就停止比较,则插入位置就在ID(i)之前。若没有一个编号比ID1大的,则插到数组最后。,Visual Basic程序设计教程,26,另一个是如何插入到数组中。移动ID(i)ID(10)及Named(i)Named(10)的位置,空出i所在位置,插入ID1和Name1。移动位置时,可以采用这样的算法:把ID(10)移到ID(11),ID(9)移到ID(10),把ID(i)移到ID(i+1)。因为这样移动时,不会丢失原来的数据。,Visual Basic程序设计教程,27,7.3.2 使用一维数组数组元素插入Const N=10P

16、rivate Sub Command1_Click()Dim ID(N+1)As Long,Named(N+1)As StringDim ID1 As Long,Name1 As String,i As Integer,j As IntegerFor i=1 To N 输入 ID(i)=Val(InputBox(请输入第:Next i 输出起始数据,Visual Basic程序设计教程,28,ID1=Val(InputBox(请输入要插入的编号,)Name1=InputBox(请输入要插入的姓名,)For i=1 To N 确定要插入的位置i If ID(i)ID1 Then Exit For

17、Next iFor j=N To i Step-1 将i N的数据后移 ID(j+1)=ID(j):Named(j+1)=Named(j)Next jID(i)=ID1:Named(i)=Name1 插入Print:For i=1 To N+1:Print ID(i);Named(i);/;:Next i 输出插入后的数据End Sub,Visual Basic程序设计教程,29,7.3.2 使用一维数组-排序改进【例7-4】改写例7-1中有关排序的程序段,使其采用改进的选择分类法。例7-1中,每发现一个a(i)a(j)时,就要交换数据,事实上对第i趟,只要把a(i)a(n)中最小数与a(i)

18、交换就可以了。改进的选择分类法采用:在第i至n个元素中,确定最小数所在的位置Position,即下标,再将a(i)与a(Position)交换数据。,Visual Basic程序设计教程,30,改进的选择分类法采用:在第i至n个元素中,确定最小数所在的位置Position,即下标,再将a(i)与a(Position)交换数据。For i=1 To n-1 按成绩从小到大排序 Position=i 先假定Score(i)就是最小值,故记录下标i For j=i+1 To n If Score(Position)Score(j)Then Position=j 记录更小的 Next j,Visual

19、 Basic程序设计教程,31,If i Position Then 下标Position与下标i的数据交换 TempName=Name1(i):Name1(i)=Name1(Position)Name1(Position)=TempName TempScore=Score(i):Score(i)=Score(Position)Score(Position)=TempScore End If Next i,Visual Basic程序设计教程,32,7.3.3 使用For Each/Next语句访问数组采用For Each/Next语句可以遍历数组中所有元素格式:For Each 元素 In

20、数组名 循环体Next其中元素必须为一个Variant类型的变量只要数组有一个元素,就会进入循环。,Visual Basic程序设计教程,33,循环的执行过程是:分别对数组中的第一个元素、第二个元素、最后一个元素,按序执行一次循环体。例如要输出数组A中各元素及它们的和,可用:S=0For Each X In A X为Variant类型的变量,不必赋值;A为数组名 Print X;:S=S+XNextPrint:Print S,Visual Basic程序设计教程,34,7.4.1 列表框(ListBox)列表框和组合框可解决单选框和复选框选项数量的限制。列表框控件可显示多个项目列表列表框往往可

21、让用户选择一个或多个项目。例如通过选择字体来改变标签的文字字体。系统提供的字体有100多种,使用ListBox,可以它们都放入列表框,利用滚动条,方便选择。,7.4 使用列表框和组合框控件,Visual Basic程序设计教程,35,列表框和组合框可解决单选框和复选框选项数量的限制。列表框控件可显示多个项目列表列表框往往可让用户选择一个或多个项目。例如通过选择字体来改变标签的文字字体。系统提供的字体有100多种,使用ListBox,可以它们都放入列表框,利用滚动条,方便选择。1创建列表框控件创建列表框在工具箱内选取列表框工具。,Visual Basic程序设计教程,36,2列表框控件的主要属性

22、(名称)Name,设置名称,字符型。缺省值为List1List:保存选项的字符串数组。如第i项为List(i-1)ListCount:列表框项目总数,共有0(ListCount-)个ListIndex:选中的项目在列表框中的位置(索引值或下标)第一项的索引值为0,第二项的索引值为1。Selected:列表框某项的选中状态,布尔型数组。,Visual Basic程序设计教程,37,Sorted:设置列表框项目是否排序。True为升序排列Text:最后一次选中的选项的文本,该属性不能直接修改MultiSelect:确定列表框是否允许多选。可设置0、1、2SelCount:列表框中选中的项目数属性举

23、例,如:Str=List1.List(2)If List1.Selected(i)Then Msgbox List1.List(i)MultiSelect为0:List1.Text等价List1.List(List1.ListIndex),Visual Basic程序设计教程,38,3列表框控件的方法(1)AddItem方法AddItem方法用于建立列表框数据项格式:列表框对象名称.AddItem 项目字符串,索引值索引值表示添加的位置,如3,表示添加的下标为3,Visual Basic程序设计教程,39,省略索引值,则将项目添加在列表框最后。如:List1.AddItem Hello 将字符

24、串添加到列表框最后List1.AddItem List2.List(0)将List2中的第一条放入List1List1.AddItem 计算机,2 将字符串添加到List1第2条后,Visual Basic程序设计教程,40,(2)RemoveItem方法RemoveItem方法清除列表框一项数据项格式:列表框对象名称.RemoveItem 索引值它通过索引值删除列表框中指定项目。如:List1.RemoveItem 2 删除List1中下标为2的项目,Visual Basic程序设计教程,41,(3)Clear方法Clear方法用于清除列表框中所有项目。格式:列表框对象名称.Clear4列表

25、框控件的常用事件Click事件DblClick事件,Visual Basic程序设计教程,42,【例7-5】通过选择字体改变标签文字字体。如图。Screen是系统对象,指整个Windows桌面FontCount属性提供了可用的字体数目Fonts属性数组提供了具体的字体,如Fonts(i)为一种字体控件:1个标签和1个列表框事件过程:Form_Load:标签属性设置,各种字体放入列表框中;List1_Click:实现修改标签字体。,Visual Basic程序设计教程,43,【例7-5】通过选择字体改变标签文字字体。如图。程序代码如下:Private Sub Form_Load()Dim i A

26、s Integer Label1.FontSize=18 Label1.Caption=浙江大学Computer For i=0 To Screen.FontCount 1 字体名放入List1 List1.AddItem Screen.Fonts(i)Next iEnd SubPrivate Sub List1_Click()Label1.FontName=List1.TextEnd Sub,Visual Basic程序设计教程,44,【例7-6】程序运行界面如图。控件:1个标签框、1个文本框1个列表框命令按钮“添加”将文本框中的内容按升序添加到列表框中,然后删除文本框内容,并把焦点定位于文

27、本框。如果列表框中的项目数超过了30,则显示“个数已到,不能再添加”的信息。,Visual Basic程序设计教程,45,命令按钮“删除”删除列表框中所选的项目(允许多选)。注意:删除一个,ListCount的值就会减1。主要属性设置:Listl的Sorted:由于要求升序,设置为True。Listl的MultiSelect:由于允许多选,设置为2。,Visual Basic程序设计教程,46,【例7-6】程序运行界面如图。程序:Private Sub Command1_Click()If List1.ListCount=30 Then MsgBox 个数已到,不能再添加,提示Else Lis

28、t1.AddItem Text1.Text Text1.Text=Text1.SetFocusEnd IfEnd Sub Private Sub Command2_Click()Dim i As IntegerFor i=List1.ListCount-1 To 0 Step-1 If List1.Selected(i)Then List1.RemoveItem iNext iEnd Sub,Visual Basic程序设计教程,47,7.4.2 组合框(ComboBox)组合框兼有文本框和列表框两者的功能它既允许用户输入文本,也允许在列表中选择项目1创建组合框控件创建组合框在工具箱内选取列表

29、组合框工具。2组合框控件的属性与列表框相同的List、ListCount、ListIndex、Sorted属性与文本框相同的Locked、SelStart、SelLength、SelText,Visual Basic程序设计教程,48,其他主要属性:(名称)Name:组合框名称。缺省值为Combo1 Text:用户输入的文本内容或选中的文字 Style:确定组合框性能和样式。可设0、1、2三个值:0:下拉组合框,包括1个下拉式列表和1个文本框(缺省值);1:简单组合框,包括1个文本框和1个不能下拉的列表;2:下拉式列表,只能选择,不能输入,Visual Basic程序设计教程,49,3组合框控

30、件的方法AddItem:添加项目RemoveItem:删除项目Clear:删除所有项目4组合框控件的常用事件Click事件:选择项目时发生Change事件:Style为0或1时,用户在组合框控件的文本框部分输入文字时,驱动事件代码执行。,Visual Basic程序设计教程,50,【例7-7】编制设置字体、字型和字号的演示程序。如图。控件:6个标签,其中1个用于显示预览效果1个框架3个组合框,Visual Basic程序设计教程,51,事件:Form_Load事件:添加组合框中初始项目等。三个组合框的Click事件:在选择项目时驱动Combo1_KeyPress事件:有输完字体名回车后,改变字

31、体Combo3_Change事件:通过输入改变预览文字大小。主要属性:预览Name设为lblExample,WordWrap为True字体、字型和字号组合框的Style值分别设置成1、2和0,Visual Basic程序设计教程,52,Private Sub Combo1_KeyPress(KeyAscii As Integer)输入字体名改字体 Dim i As Integer If KeyAscii=13 Then For i=0 To Screen.FontCount-1 If Screen.Fonts(i)=Combo1.Text Then Exit For Next i If i=S

32、creen.FontCount-1 Then lblExample.FontName=Combo1.Text End IfEnd Sub Private Sub Combo1_Click()通过选择改字体 lblExample.FontName=Combo1.TextEnd Sub,Visual Basic程序设计教程,53,Private Sub Combo2_Click()通过选择改变字型 Select Case Combo2.Text Case 粗体 lblExample.FontBold=True:lblExample.FontItalic=False Case 斜体“lblExamp

33、le.FontBold=False:lblExample.FontItalic=True Case 粗体斜体“lblExample.FontBold=True:lblExample.FontItalic=True Case 标准 lblExample.FontBold=False:lblExample.FontItalic=False End SelectEnd Sub,Visual Basic程序设计教程,54,Private Sub Combo3_Change()通过输入字号改字号 Dim N As Integer N=Val(Combo3.Text)If N=6 And N=150 Th

34、en lblExample.FontSize=NEnd SubPrivate Sub Combo3_Click()通过选择改字号 lblExample.FontSize=Val(Combo3.Text)End Sub,Visual Basic程序设计教程,55,Private Sub Form_Load()初始化 Dim i As Integer For i=6 To 26 Step 2:Combo3.AddItem i:Next i 定义字号表项 For i=28 To 72 Step 4:Combo3.AddItem i:Next i 定义字号表项 Combo1.AddItem 宋体 定义

35、字体表项 Combo1.AddItem 隶书:Combo1.AddItem 楷体_GB2312 Combo1.AddItem 黑体:Combo1.AddItem 幼圆 Combo2.AddItem 标准:Combo2.AddItem 粗体 定义字形表项 Combo2.AddItem 斜体:Combo2.AddItem 粗体斜体 Combo1.Text=隶书:Combo2.Text=斜体 初始化组合框 Combo3.Text=26 lblExample.FontName=隶书 初始化演示标签框 lblExample.FontItalic=True:lblExample.FontSize=26 l

36、blExample.ForeColor=RGB(255,0,0)lblExample.Caption=中文字型示例“End Sub,Visual Basic程序设计教程,56,对一批同类且功能类似的控件,可以建成控件数组控件数组可以简化编程控件数组中的每一个元素是同类控件,并且具有相同的名称。控件数组用索引值Index属性区分元素。,7.5 使用一维控件数组,Visual Basic程序设计教程,57,7.5.1 创建控件数组创建控件数组的步骤:首先,与创建其它控件一样,创建第1个控件如果需要修改名称,则可先在属性窗口修改该控件名称;选择该控件,使用“编辑”菜单的“复制”命令使用“编辑”菜单的

37、“粘贴”命令这时VB出现对话框,询问是否建立控件数组,单击“是”这时新控件的Index索引值为1,而原控件索引值自动为0;控件数组已经产生,Visual Basic程序设计教程,58,把新粘贴的控件拖动到窗体的合适位置;若数组含有多个控件,则重复“粘贴”和调整位置操作。控件数组及元素,也有属性、方法和事件。元素的方法、事件和属性与它的非数组同类控件一样但有一个重要的属性是Index属性,相当于数组下标,编程用对于整个数组,属性LBound、UBound和Count,分别表示着整个控件数组下标的下界、上界和元素个数。,Visual Basic程序设计教程,59,7.5.2 访问控件数组元素访问控

38、件数组元素与访问普通数组元素一样通过控件名称(索引值)来确定每个控件如Command1(2).Caption=问候。如果是一批很有规律的操作,一般可以通过循环进行。注意:若删除了其中某数组元素(控件),则将导致索引Index不连续,此时再使用该索引值将出错。解决的方法是重新修改其他元素的Index值,Visual Basic程序设计教程,60,【例7-8】修改例4-4,要求用控件数组。创建有3个单选钮的控件数组程序代码如下:Private Sub Form_Load()Text1.FontSize=10 Option1(0).Value=True 使索引值0的控件处于选中状态 Text1.Te

39、xt=Hello!End Sub,Visual Basic程序设计教程,61,Private Sub Option1_Click(Index As Integer)设置字号 Text1.FontSize=Val(Option1(Index).Caption)End Sub程序运行时单击单选按钮,Index就自动作为Click事件的参数,传给Click事件。,Visual Basic程序设计教程,62,【例7-9】编写一个运行界面如图的程序,其中“+”、“-”、“”、“”为命令按钮控件数组,2个文本框用于输入数据,当单击四个运算符按钮中的任一个,则开始计算,并在Label1、Label2和Lab

40、el3上分别显示运算符、等号和运算结果。,Visual Basic程序设计教程,63,Private Sub Command1_Click(Index As Integer)Label1.Caption=Command1(Index).Caption 将运算符显示在Label1上 Label2.Caption=Select Case Index Case 0:Label3.Caption=Val(Text1.Text)+Val(Text2.Text)加法 Case 1:Label3.Caption=Val(Text1.Text)-Val(Text2.Text)减法 Case 2:Label3.

41、Caption=Val(Text1.Text)*Val(Text2.Text)乘法,Visual Basic程序设计教程,64,Case 3 除法 If Val(Text2.Text)=0 Then MsgBox 除法错误!,vbCritical,出错 Else Label3.Caption=Val(Text1.Text)/Val(Text2.Text)End If End SelectEnd SubPrivate Sub Command2_Click()“清除”按钮 Text1.Text=:Text2.Text=Label1.Caption=:Label2.Caption=:Label3.C

42、aption=“End SubPrivate Sub Command3_Click()“退出”按钮 EndEnd Sub,Visual Basic程序设计教程,65,二维数组有两个下标二维数组可表示一个矩阵可以把第一个下标看作行,第二个下标看作列。,矩 阵,7.6 使用二维数组,Visual Basic程序设计教程,66,7.6.1 如何声明二维数组声明格式:Dim 数组名(下标说明,下标说明)As 类型名数组名、下标说明的要求和格式与一维数组一样如:Dim A(9,9)As String,B(3 To 5,20)As Integer 二维数组可以和其它变量在同一个Dim语句中声明。,Visu

43、al Basic程序设计教程,67,7.6.2 使用二维数组1引用数组元素格式:数组名(下标,下标)如Dim A(9,9)As String,B(3 To 5,20)As Integer可用A(2,2)、A(i,i)、A(k*2,5)、B(4,6)访问元素0i 9;0 k*2 9但A(7)、B(1,3)都是错误,Visual Basic程序设计教程,68,2给数组元素赋值同普通变量一样赋值。如:Dim a(3,4)As Integer,N As Integer,i As Integer,j As Integer,C(5,5)C(0,0)=浙江大学&计算机学院 N=1For i=1 To 3 二

44、重循环对二维数组元素赋值。For j=1 To 4 a(i,j)=N N=N+1 Next jNext I,Visual Basic程序设计教程,69,3运行时通过输入赋值,如:For i=3 To 5 通过输入对话框对一批数组元素赋值 For j=0 To 20 B(i,j)=Val(InputBox(请输入数据“)Next jNext i,Visual Basic程序设计教程,70,4输出二维数组,如显示矩阵:For i=1 To 3 每行显示4个,共3行。For j=1 To 4 Print a(i,j),Next j Print 换行Next I5访问数组每个元素都可以象简单变量一样使

45、用成批操作时,可以通过循环来进行。,Visual Basic程序设计教程,71,【例7-10】在一个1010的会议室坐了很多人,编程:将每个人的年龄按座位(行和列)输入至矩阵A(无人坐的输入0)。并要求:(1)输出该矩阵;(2)输出矩阵最大元素值(最大年龄);(3)输出平均值(平均年龄)。,Visual Basic程序设计教程,72,处理过程:输入所有数据输出矩阵求最大值并输出求平均值并输出在求平均值时要考虑分母,由于存在空位置,因此要统计人数,而不能直接使用100。,Visual Basic程序设计教程,73,7.6.2 使用二维数组【例7-10】矩阵操作Const N=10Private

46、Sub Command1_Click()Dim i As Integer,j As Integer,Count As Integer Dim Age(N,N)As Integer,Max As Integer,Average As Integer For i=1 To N 在此二重循环中实现矩阵输入 For j=1 To N Age(i,j)=Val(InputBox(&i&,&j&)=)Next j Next i,Visual Basic程序设计教程,74,Count=0:Average=0:Max=Age(1,1)For i=1 To N 在二重循环中实现矩阵输出、求最大值、求和、统计个数

47、 For j=1 To N Print Tab(j-1)*5+1);Age(i,j);If Age(i,j)Max Then Max=Age(i,j)If Age(i,j)0 Then Count=Count+1:Average=Average+Age(i,j)Next j Print Next I Print 最大年龄为:;Max Print 平均年龄为:;Round(Average/Count,2)End Sub,Visual Basic程序设计教程,75,7.7.1 如何声明动态数组如果在运行时才能确定数组大小,可用动态数组。使用动态数组有利于节省存储空间。声明并使用动态数组需要两个步骤

48、:1声明动态数组格式:Dim 数组名()As 类型名它声明了一个空维数组,表明该数组是动态数组例如Dim a()As Integer,7.7 使用动态数组,Visual Basic程序设计教程,76,2用Redim语句分配数组的实际元素个数ReDim语句是一个可执行语句作用是为数组分配实际空间。格式为:ReDim 数组名(下标说明,下标说明)N=10,则可用ReDim a(n),或ReDim a(n,n)在分配实际元素个数后,就可象固定数组一样使用,Visual Basic程序设计教程,77,7.7.2 保留动态数组中存放的数据ReDim语句会使原有的数据就全部会丢失。在ReDim中使用Pre

49、serve关键字可保留原数据。用法是:ReDim Preserve 数组名(下标说明,下标说明),多维数组,使用Preserve关键字只能改变数组中最后一维的上界,Visual Basic程序设计教程,78,如有以下代码段,输出结果如图。Dim ID()As Integer,Name1()As String,i As IntegerReDim ID(5),Name1(5)For i=1 To 5 ID(i)=i:Name1(i)=A&iNext iReDim Preserve ID(UBound(ID)+1),Name1(UBound(Name1)+1)ID(6)=6:Name1(6)=ABC

50、For i=1 To 6 Print ID(i),Name1(i)Next i,Visual Basic程序设计教程,79,【例7-11】编程:输入正整数n,再由InputBox函数输入n个数至数组并在窗体上输出这n个数,然后要求元素数据反过来存放,并输出。即第1个元素与第n个元素互换,第2个元素与第n-1个元素互换,。最后在窗体上输出对换后各元素的值。如:输入8和11、12、13、14、15、16、17、18,输出为:11 12 13 14 15 16 17 18和18 17 16 15 14 13 12 11。,Visual Basic程序设计教程,80,分析:因数组元素个数在运行中才能确

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号