数组与自定义类型.ppt

上传人:牧羊曲112 文档编号:5986260 上传时间:2023-09-11 格式:PPT 页数:48 大小:378KB
返回 下载 相关 举报
数组与自定义类型.ppt_第1页
第1页 / 共48页
数组与自定义类型.ppt_第2页
第2页 / 共48页
数组与自定义类型.ppt_第3页
第3页 / 共48页
数组与自定义类型.ppt_第4页
第4页 / 共48页
数组与自定义类型.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《数组与自定义类型.ppt》由会员分享,可在线阅读,更多相关《数组与自定义类型.ppt(48页珍藏版)》请在三一办公上搜索。

1、1,计算机应用教研室,第07章 数组及自定义类型,主讲教师:董小艳联系电话:87092417,2,引例,求某门课6个学生成绩中的高于平均分的学生人数 方法一:用一个变量来接收6个学生的成绩(多次赋值)。缺点:已处理过的数值不保存,再次对数据处理时,要重新输入。方法二:用6个变量分别存放6个学生的成绩。缺点:如果处理的数据增多,需要使用很多变量,给程序的编写带来极大的不方便。方法三:利用数组,Private Sub Command1_Click()Dim avg As Single,x As Single,i As Integer,sum As Single,n As Integer For i

2、=1 To 6 x=Val(InputBox(请输入第 Next i avg=sum/6 For i=1 To 6 x=Val(InputBox(请输入第&i&个学生的成绩,输入,0)If x avg Then n=n+1 Next i Print Print 平均成绩为:&avg Print 高于平均成绩的有:&n&人End Sub,Private Sub Command2_Click()Dim x As Single,y As Single,z As Single,u As Single,v As Single,w As Single,avg As Single,n As Integer

3、x=Val(InputBox(请输入第1个学生的成绩,输入,0)y=Val(InputBox(请输入第2个学生的成绩,输入,0)z=Val(InputBox(请输入第3个学生的成绩,输入,0)u=Val(InputBox(请输入第4个学生的成绩,输入,0)v=Val(InputBox(请输入第5个学生的成绩,输入,0)w=Val(InputBox(请输入第6个学生的成绩,输入,0)Print x;y;z;u;v;w avg=(x+y+z+u+v+w)/6 If x avg Then n=n+1 If y avg Then n=n+1 If z avg Then n=n+1 If u avg T

4、hen n=n+1 If v avg Then n=n+1 If w avg Then n=n+1 Print 平均成绩为:;avg Print 高于平均成绩的有&n&人End Sub,3,本章主要内容,1、数组的概念 2、一维数组 3、二维数组 4、控件数组 5、自定义数据类型,4,7.1 数组,1、数组的有关概念(1)数组:是一个由多个同类型变量组成的集合。(2)数组名:这组变量有统一的名称,就是数组名。(3)数组元素:构成数组的成员。每个数组元素和一个普通变量一样能存放一个数据。(4)下标:用来标识数组中的每一个元素在数组中的位置。如,有一个数组a,数组元素可分别表示为:a(1),a(2

5、),a(3),a(4),5,7.1 数组,2、数组的特点(1)数组由若干个数组元素组成,数组元素的数据类型一致。(2)数组元素和简单变量作用相似,可存储一个数据。(3)数组中各元素之间有内在联系,在内存中占连续的一段存储单元。,6,7.1 数组,3、数组的分类(1)按照定义时数组元素个数确定与否,数组可分为:静态数组:定义时数组元素的个数就已经确定动态数组:定义时数组元素的个数不确定,在程序运行时根据需要才确定数组元素的多少(2)按照数组元素下标的个数,数组可分为:一维数组:数组元素有一个下标二维数组:数组元素有两个下标多维数组:数组元素有多个下标,7,一维静态数组,1、一维静态数组的定义 D

6、im 数组名(下界 To 上界)As 其中:(1)数组名:数组的名称,命名要符合变量命名规则。(2)下界 To 上界:维说明,确定数组元素下标的取值范围及数组元素的个数(上界-下界+1)。(3)As:用来指明数组元素的类型,默认为变体类型。,8,7.2.1 一维静态数组,举例:定义一个用来存放10个整数的数组。Dim a(1 To 10)As Integer说明:(1)定义一个数组,数组名为a。(2)数组中有10个数组元素,数组元素分别表示为:a(1),a(2),a(10)。(3)数组元素的数据类型为整型,在内存中占2个字节。,9,一维静态数组,2、注意事项(1)维说明中下界和上界只能取直接常

7、量或直接常量表达式,符号常量和符号常量表达式,不能为变量或包含变量的表达式。(2)维说明中下界可以省略,默认为0。Dim x(6)As integer,定义数组x是有x(0)到x(6)连续的7个数组元素,Dim n As Integern=10Dim a(1 To n)As Single,Const n As Integer=6 Dim x(1 To n)As Double Dim y(1 To n+6),10,7.2.1 一维静态数组,(3)用“Option Base 1”可设定数组元素下界为1,以改变下界默认值为0,该语句必须放在窗体或模块的通用声明段中。(4)一维静态数组在同一过程中只能

8、声明一次。(5)声明数组后,各数组元素的初值与声明普通变量相同。(6)声明数组和声明变量一样,数组也有作用范围。,Dim a(1 To 6)As Integer.Dim a(8)As Single,11,7.2.1 一维静态数组,3、使用数组编程的一般步骤:(1)定义数组(2)为数组元素赋值(3)处理数组中的数据(4)输出结果,12,7.2.1 一维静态数组,例 统计某门课6个学生成绩中高于平均分的学生人数。编程步骤(1)定义一个数组用来存放6个学生的成绩(2)给数组赋值,将6个学生的成绩存入数组(3)求平均成绩,比较,统计出高于平均分的学生人数(4)将结果输出,Private Sub Com

9、mand1_Click()Dim cj(1 To 6)As Single,avg As Single,i As Integer,t As Integer For i=1 To 6 cj(i)=Val(InputBox(请输入第 Next i Print Print 平均分为:&avg Print 高于平均分的学生有&n&个End Sub,Private Sub Command1_Click()Dim cj(1 To 60)As Single,avg As Single,i As Integer,n As Integer For i=1 To 60 cj(i)=Val(InputBox(请输入第

10、 Next i Print Print 平均分为:&avg Print 高于平均分的学生有&n&个End Sub,13,7.2.1 一维静态数组,例:用数组求某门课10个学生中的最低成绩、最高成绩。编程步骤(1)定义一个数组用来存放10个学生的成绩(2)给数组赋值,将10个学生的成绩存入数组(3)求最高成绩、最低成绩(4)将结果输出,如果在编写程序时学生人数不确定,该如何解决?,Private Sub Command1_Click()Dim cj(1 To 10)As Single,avg As Single,i As Integer Dim max As Single,min As Sing

11、le For i=1 To 10 cj(i)=Val(InputBox(请输入第 Next i Print Print 最高成绩为&max Print 最低成绩为&minEnd Sub,Private Sub Command1_Click()Dim cj(1 To 10)As Single,avg As Single,i As Integer Dim max As Single,min As Single for i=1 to 10 cj(i)=Val(InputBox(请输入第 Next i Print Print 最高成绩为&max Print 最低成绩为&minEnd Sub,14,7.

12、2.2 一维动态数组,1、概念:动态数组是指在声明数组时不给出数组的大小,而是在程序执行到ReDim语句时才确定大小。2、定义 创建动态数组通常分为两步:第一步:在标准模块、窗体的通用程序段或过程中,声明一个省略维说明的数组,格式为:Dim 数组名()As第二步:根据应用需要,用ReDim声明大小,格式为ReDim Preserve 数组名(下界 To 上界)As,第一步可以省略,15,7.2.2 一维动态数组,3、注意事项(1)Dim和ReDim语句中数组元素的数据类型必须一致(2)声明动态数组的ReDim语句可以使用变量(3)同一个动态数组可以多次重复声明,重复声明时数组元素的值均被初始化

13、,若想保留原来的值,可以在ReDim语句中加关键字Preserve,Dim a()As Integer.ReDim a(1 To 8)As Integer,Dim a()As Integer.ReDim a(1 To 8)As Single,Dim a()As Integer,n As Integer n=9 ReDim a(n)As Integer,16,7.2.2 一维动态数组,Dim a()As Integer,n As Integern=6ReDim a(1 To n)As IntegerFor i=1 To 6 a(i)=8Next i,ReDim a(1 To 8)As Integ

14、er,ReDim Preserve a(1 To 8)As Integer,17,7.2.2 一维动态数组,例 求某门课程n个同学最高成绩和最低成绩。分析:(1)学生人数在编写程序时不能确定(2)用于存储学生成绩的数组元素的多少随学生人数的不同而异 编程步骤:(1)定义一个动态数组,用来存放n个学生的成绩(2)给数组赋值,将学生成绩存入数组(3)对数组中的数据进行计算、比较(4)输出结果,Private Sub Command2_Click()Dim cj()As Single,n As Integer,i As Integer Dim avg As Single,max As Single,

15、min As Single n=Val(InputBox(请输入学生人数,输入,0)ReDim cj(1 To n)As Single For i=1 To n cj(i)=Val(InputBox(请输入第 Next i Print Print 最高成绩为&max Print 最低成绩为&minEnd Sub,18,7.2.2 一维动态数组,例:某门课n个学生中,将高于平均分的成绩输出。解题步骤:(1)定义一个动态数组,用来存放n个学生的成绩(2)给数组赋值,将学生成绩存入数组,并实现求总成绩(3)求出平均分,然后比较,将高于平均分的学生成绩输出,Private Sub Command2_C

16、lick()Dim cj()As Single,n As Integer,i As Integer,s as single Dim avg As Single,max As Single,min As Single n=Val(InputBox(请输入学生人数,输入,0)ReDim cj(1 To n)As Single For i=1 To n cj(i)=Val(InputBox(请输入第 Next iEnd Sub,19,7.2.3 数组基本操作,1.为数组元素赋值 1)通过赋值语句 通过一层For循环給一维数组元素赋值产生-5到+5范围内的随机整数存放到数组中 例 将010101010

17、1这10个数存放到数组中,Dim i%Dim a(1 To 10)For i=1 To 10 a(i)=IIf(i Mod 2=0,1,0)Next i,20,2)通过InputBox函数 如果数组元素的值无法预先确定,需要在运行时通过键盘输入,可通过InputBox函数赋值 使用InputBox()函数每次只能提供一个数据,对大量的数据输入则是非常不方便的 3)使用Array函数 格式:数组名=Array()Array函数可对变体类型的一维动态数组赋值 数组元素的个数由中数据个数决定,数组下标下界可由LBound函数得到,下标上界可由UBound函数得到。,Dim score(1 To 30

18、)For i=1 To 30 score(i)=InputBox(请输入第&i&个同学成绩)Next i,7.2.3 数组基本操作,Score=Array(20,30,40,50,60),21,4)使用文本框和split函数 格式:=Split(,分隔符)这种方法是将文本框中输入的内容用Split函数分离成一个个数据,存放到数组中。是实际应用中常用到的一种处理大量数据的方法 注意:用Split函数赋值的数组的最小下标均从0开始,下标上界可用ubound函数得到 2.数组输出 可用一层for循环实现,a=Split(Text1,)For i=LBound(a)To UBound(a)Print

19、a(i)Next i,7.2.3 数组基本操作,a=Split(Text1,),22,课堂练习:1.以下有关数组定义的语句序列中,错误的是 A)dim arr1(3)arr1(1)=100 arr1(2)=Hello arr1(3)=123.45 B)Dim arr2()As Integer Dim size As Integer Private Sub Command2_Click()size=InputBox(输入:)ReDim arr2(size)End Sub,23,C)Option Base 1 Private Sub Command3_Click()Dim arr3(3)As In

20、teger End Sub D)Dim n As Integer Private Sub Command4_Click()Dim arr4(n)As Integer End Sub,24,2、如果在程序中没有特别声明,即程序中没有使用Option Base 1 语句,缺省下界和关键字TO时,则表示下标的取值。,A、从0开始,等价于0 to 上界 B、从2开始C、从1开始,等价于1 to 上界D、等价于 n to 上界,3、使用下列语句定义数组,定义正确的是。Dim n as IntegerConst m as Integer=5Dim A(m)as IntegerDim B(1 to 6.3)

21、as IntegerDim C(1 to 2+3)as LongDim D(0 to n)as single,A、一维数组ABC B、一维数组ABCD C、一维数组ABD,25,1.文本框输入一串字符,统计各字母出现的次数,并输出统计结果分析:可声明一个具有26个元素的一位数组a存放各字符出现的个数。下标范围为65 to 90,既让a(65)存放字符a个数,a(66)存放字符b个数,依次类推。可发现这样一个规律,存放字母个数的数组元素的下标等于这个字母的Ascii值。,7.2.4 一维数组的应用,Private Sub Command1_Click()Dim a%(65 To 90),c As

22、 String*1,i%,j%For i=1 To Len(Text1)c=UCase(Mid(Text1,i,1)If c=A And c 0 Then Picture1.Print Chr(i);=;a(i);Next iEnd Sub,26,2.输入多名学生的一门课程的考试成绩,统计各分段人数。分析:学生人数无法预先知道,因此存储学生的成绩应采用动态数组,输入数据时可采用文本框输入。存储各段人数可用一个静态数组比如counter(0 to 10),counter(0)存储0到9分人数,counter(1)存储10到19分人数counter(10)存储100分人数。可发现这样一个规律,存储

23、某一分数段的人数的counter数组元素的下标=分数10,7.2.4 一维数组的应用,Private Sub Command1_Click()Dim i%,k%,a()As String,counter(0 To 10)As Integera=Split(Text1,)For i=0 To UBound(a)If a(i)=0 Then k=a(i)10 counter(k)=counter(k)+1End IfNext iPrint 统计结果如下:For i=0 To 10If counter(i)0 Then Print 第&i*10&-&i*10+9&段共有&counter(i)End

24、IfNext iEnd Sub,27,3.用比较交换法对同学成绩实现从高到低排序 分析:成绩输入可通过inputbox函数 排序是通过多次求最大(小)数实现,求最大(小)数可通过两两比较方法实现。实现从高到低排序的算法如下:1)假定第一个数最大,让其与其余n-1个数比较,如发现有比它大就交换这两个数,保证第一个存放的是这两个数中较大数。当第一个数与所有数都比较完了就能保证第一个存放就是这n个数中最大数,实现了从n个数找到最大数放到第一个位置上,第一个数就排好序了 2)排除第一个数.假定第二个数是余下n-1个数中最大数,让其与其余n-2个数比较,如发现有比它大就交换这两个数,保证第二个存放的是这

25、两个数中较大数。当第二个数与其余所有数比较完了,就能保证第二个存放的就是余下n-1个数中最大数,实现从n-1个数中找到最大数放到第二个位置上,第二个数就实现了排序。i)排除前i-1个数。假定第i个数是余下n-i+1个数中最大数,让其与其余n-i个数比较,如发现有比它大的就交换这两个数,保证第i个放的是这两个数中较大数,当第i个数与所有的数比较完了,就能保证第i个存放的是就是余下n-i+1个数中最大数,实现从n-i+1个数中找到最大数放到第i个位置上,第i个数实现排序 重复如上步骤,直到剩下第n个数,它就是这n个数中最小数,就应放到最后一个位置上。即重复n-1次求最大数可实现从高到低排序,Pri

26、vate Sub Command1_Click()Dim i%,j%,t%,a(1 To 6)As SingleFor i=1 To 6 a(i)=InputBox(请输入第 Next iEnd Sub,Private Sub Command1_Click()Dim a()as single,i%,j%,t%,n%n=InputBox(请输入人数)ReDim a(1 To n)As SingleFor i=1 To n a(i)=InputBox(请输入第 Next iEnd Sub,28,4.用选择法实现同学成绩的从高到低排序通过引入一个变量(比如k)减少交换次数。排序算法如下:1)假定第一

27、个数最大,让k指向它,让这个最大数与其余的数比较,如果发现有比它大的就让k指向这个较大数,继续让这个较大数与其余的数比较,始终让k指向比较较大数。比较完了就能保证k指向的是n个数的最大数。交换第k个数和第一个数,这样实现对第一个数的排序。找出n个数最大数放在第一个位置上。2)排除第一个数,假定第二个数是余下的n-1个数的最大数,让k指向它。让这个数与其余n-2个数比较,如果发现有比它大的就让k指向这个数,让这个较大数继续与其余的数比较,始终让k指向比较的较大数。比较完了就能保证k指向的是余下n-1个数的最大数。交换第k个数和第二个数,这样实现从余下n-1个数中找到最大数放到第二个位置上。i)排

28、除前i-1个数。假定第i个数是余下n-i+1个数的最大数,让k指向它。让这个数与其余数比较,如果发现有比它大的就让k指向它。让这个较大数继续与其余的数比较,始终让k指向比较的较大数。比较完了就能保证k指向就是余下n-i+1个数的最大数。交换第k个数与第i个数,这样实现对第i个数排序。重复以上步骤,直到剩下一个数,无须比较,自然应放到最后一个位置上。,Private Sub Command1_Click()Dim a(1 To 6)As Single,i%,j%,k%,t!For i=1 To 6 a(i)=InputBox(请输入 Next iEnd Sub,29,课堂练习:某数组中有10个元

29、素,元素的值由键盘输入,要求将前5个元素与后5个元素对换。请输出数组中原来各元素的值和对换后各元素的值(要求输出在标签上)提示:要将元素输出在标签上,可通过label1=label1&a(i)&space(4)将第1个元素与第10个元素互换,第2个元素与第9个元素互换,第5个元素与第6个元素互换。交换5次,交换的两个元素的下标和为11,Private Sub Command1_Click()Dim a(1 To 10)As Single,i%,t!For i=1 To 10 a(i)=InputBox(请输入第&i&元素)Label1=Label1&a(i)&Space(4)Next iFor

30、 i=1 To 5 t=a(i):a(i)=a(11-i):a(11-i)=tNext iFor i=1 To 10 Label2=Label2&a(i)&Space(4)Next iEnd Sub,Private Sub Command1_Click()Dim i%,a()As Single,n As Integer,t As Single,j&n=InputBox(请输入交换的数的个数)ReDim a(1 To n)As SingleFor i=1 To n a(i)=InputBox(请输入第&i&个数)Label1=Label1&a(i)&Space(4)Next iPrintFor

31、i=1 To n 2 t=a(i):a(i)=a(n+1-i):a(n+1-i)=tNext iFor i=1 To n Label2=Label2&a(i)&Space(4)Next iEnd Sub,30,5.对于给定的一组数15、8、4、13、6、10、17、1,键盘输入一个数,用顺序查找法找出该数在数组中的位置。分析:假设用变量p来标记是否找到,用x存放想查找的数。给变量p赋初值为false,使x与数组中的每一个元素进行比较,如果相等,给变量p赋值为true,表示找到了,并退出循环。如果所有的数都与x比较,但找不到与x相等的数,则p值仍为false。循环结束后,可根据变量p的值判断是否

32、找到要找的数。,7.2.4 一维数组的应用,Option Base 1Dim a(),m%,n%,i%Private Sub command1_Click()Dim x!,p As Boolean,i%x=InputBox(请输入要查找的数)p=FalseFor i=m To n If x=a(i)Then p=True Exit For End IfNext iIf p=True Then MsgBox 找到了,在数组中的位置为第 Next iPrintEnd Sub,31,6.将一个数插入到数组中指定位置数组中元素的插入过程是:1)输入插入的位置及要插入的数2)增加数组元素的个数3)将待插

33、入位置以后的数逐一后移一位,腾出插入位置4)在插入位置插入数,7.2.4 一维数组的应用,Dim a(),m%,n%,i%Private Sub Command1_Click()x=InputBox(“请输入要插入的数)Do k=InputBox(请输入要插入的位置,范围是 Next iPrintEnd SubPrivate Sub Form_Load()Showa=Array(15,8,4,13,6,10,17,1)m=LBound(a)n=UBound(a)For i=m To n Print a(i)Next iPrintEnd Sub,32,7.删除数组中指定的元素数组中元素的删除过程

34、:1)输入要删除的数2)设置一个变量p表示是否找到,给p赋值为false。在数组中查找要删除的数的位置,如果有这个数,将该数所在数组中位置赋值给k,给p赋值为true,将k以后的每一位元素前移一位,实现删除操作。3)比较完了根据p的值判断是否找到,p为false则给出相应信息,如果p为true则减少数组元素的个数,将删除后数组元素输出。,7.2.4 一维数组的应用,Dim a(),m%,n%Private Sub Command1_Click()Dim x!,p As Booleanx=InputBox(“请输入要删除的数”):p=FalseFor i=m To n If a(i)=x The

35、n p=True:k=i For j=k+1 To n a(j-1)=a(j)Next j End IfNext iIf p=False Then MsgBox 没有要删除的数Else n=n-1 ReDim Preserve a(n)Print:Print 删除 Next iEnd Sub,33,7.3 二维数组,1 二维数组的定义 格式:Dim 数组名(下界1 TO 上界1,下界2 TO 上界2)As 二维数组一般可以看成是一个二维表、行列式、矩阵或平面坐标等。,Dim score(1 to 30,1 to 5)as single,34,2.二维数组的赋值1)通过赋值语句 给二维数组赋值用

36、两层for循环实现 例给n阶方阵赋值,对角线元素为1,其余为0,Dim n%,fz()As Single,i%,j%n=InputBox(请输入阶数)ReDim fz(1 To n,1 To n)For i=1 To n For j=1 To n fz(i,j)=IIf(i=j Or i+j=n+1,1,0)Next jNext i,7.3 二维数组,35,2)通过inputbox函数例 存放某班某学期的课程成绩,Dim m%,n%,score()As Single,i%,j%m=InputBox(请输入人数)n=InputBox(“请输入课程门数)ReDim score(1 To m,1 T

37、o n)For i=1 To m For j=1 To n score(i,j)=InputBox(请输入第&i&个&同学&第&j&门课的成绩)Next jNext i,7.3 二维数组,36,3.输出数组元素 输出二维数组元素要用两层for循环实现。例 输出前面同学成绩,For i=lbound(score,1)To UBound(score,1)For j=lbound(score,2)To UBound(score,2)Print score(i,j);Next j PrintNext i,7.3 二维数组,37,4 二维数组的应用例1 某班有30个同学参加4门课程的考试,要求挑选出其中

38、至少有一门课程在90分以上的学生,并输出这些同学的4门的课程成绩。分析:用变量p表示某同学是否有90分以上,为其赋初值为 false,让每个同学每门成绩与90分比较,若有超过90分,则将p赋值为true,并跳出内层for循环。根据p的值判断某同学成绩是否有超过90分的,若p为true说明有超过90分的,将该同学成绩输出。,7.3 二维数组,Private Sub Command1_Click()Dim i%,j%,p As BooleanDim score(1 To 30,1 To 4)As SingleFor i=1 To 30 For j=1 To 4 score(i,j)=InputBo

39、x(请输入第 Next j Print End IfNext iEnd Sub,38,例2.打印杨辉三角型。分析:该三角形是有规律,第一列和最后一列均为1,其余为值为前一行前一列元素加上前一行同列元素和,即a(i,j)=a(i-1,j-1)+a(i-1,j)(假设用a存放该三角形的值),7.3 二维数组,Private Sub Form_Click()Dim n%,i%,j%n=InputBox(请输入杨辉三角形的行数 n:)ReDim a(n,n)For i=1 To n a(i,1)=1:a(i,i)=1 Next i For i=3 To n For j=2 To i-1 a(i,j)=

40、a(i-1,j)+a(i-1,j-1)Next j Next i For i=1 To n For j=1 To i Print Tab(6*j);a(i,j);Next j Next iEnd Sub,39,例3.有一个n行n列的二维数组,找出最大数组元素和它所在的行号、列号。分析:由于矩阵行数和列数不确定,则需要用动态数组。可引入一个变量比如max存放最大数,求最大数可用两两比 较的方法,要实现所有元素和max的比较可通过两层循环实现,7.3 二维数组,Private Sub command1_Click()Dim a()As Integer,max%,r%,c%,n%,i%,j%n=In

41、putBox(请输入行列数)ReDim a(1 To n,1 To n)For i=1 To n For j=1 To n a(i,j)=InputBox(请输入第 maxEnd Sub,40,例4 有一个5行5列的二维数组,元素随机产生,请将其转置后输出,并求出两个对角线元素和分析:1.元素产生可用int和rnd结合产生。2.设转置前数组为a,转置后数组为b,则两者关系为 b(i,j)=a(j,i)。3.对角线元素存在这样关系:i=j或i+j=6。,7.3 二维数组,Option Base 1Dim a%(5,5),b%(5,5),s%,i%,j%Private Sub Command1_C

42、lick()For i=1 To 5 For j=1 To 5 a(i,j)=Int(Rnd*10)Picture1.Print Tab(3*j);a(i,j);Next jNext iEnd SubPrivate Sub Command2_Click()For i=1 To 5 For j=1 To 5 b(i,j)=a(j,i)Picture2.Print tab(3*j);b(i,j);Next jNext iEnd SubPrivate Sub Command3_Click()For i=1 To 5 s=s+a(i,i)+a(i,6-i)Next iLabel1.Caption=对角

43、线元素和为&s-a(3,3)End Sub,41,7.4 控件数组,1.控件数组的概念 是由一组同类控件组成,它们共有一个控件名,具有相同的属性。系统给每个控件数组元素赋予唯一的一个索引号(类似于数组元素的下标),第一个控件数组元素索引号为0,第二个控件数组元素的索引号为1,依次类推。2.控件数组建立 建立步骤如下:(1)在窗体上添加第一个控件,设置好名称和属性;(2)选中该控件,进行复制和粘贴操作,系统会出现一个提示信息:“已经有一个控件为,创建一个控件数组吗?如果单击“是”按钮,就建立了一个控件数组。进行粘贴操作若干次,就可建立所需个数的控件数组元素。,42,3.举例 例1 设计如图所示的

44、界面,创建一个选择按钮控件数组,包含5个控件,运行时按下那一个按钮,标签显示相应颜色。设控件数组名为option1分析:5个按钮作为一个控件数组,因此能够共享同一个事件。在选项按钮的click事件中根据index的值判断用户选了那一个按钮以此决定label1颜色。,7.4 控件数组,43,例2设计窗体,输入两个数,根据不同的运算符计算结果。分析:无论多少种运算,在同一时刻只能进行一种运算,因此,选择不同运算通过单选按钮数组将是非常的方便的。这里根据index的确定用户选择的是哪个按钮。,7.4 控件数组,44,7.5 自定义数据类型,一组不同类型变量的集合。相当于C语言中的结构类型;Pasca

45、l中的记录类型。1.自定义类型的定义 格式:Type 自定义类型名 元素名(下标)As 类型名 元素名(下标)As 类型名 End Type,Private Type student no As Integer names As String*10 sex As String*1 age As Integer score(1 To 4)As SingleEnd Type,45,注意:(1)自定义类型一般在标准模块(.BAS)中定义,默认是Public;在窗体必须是Private。(2)自定义类型中的元素类型可以是字符串,但最好是定长字符串。(3)不要将自定义类型名和该类型的变量名混淆,前者表示

46、了如同Integer、Single等的类型名,后者VB根据变量的类型分配所需的内存空间,存贮数据。(4)自定义类型一般和数组结合使用,简化程序的编写。,46,2自定义类型变量的声明和使用(1)声明格式:Dim 变量名 As 自定义类型名(2)引用 形式:变量名.元素名,Stu.NamesStu.score(4),Dim Stu As Student,47,建立一个自定义类型数组存放一个班同学的信息,通过输入框输入每个同学的记录。,Dim Stu(30)As Student Private Sub Command1_Click()Dim i%For i=1 To 30 Stu(i).no=i S

47、tu(i).names=InputBox(姓名:)Stu(i).sex=InputBox(性别:)Stu(i).age=Val(InputBox(年龄:)Stu(i).score(1)=Val(InputBox(请输入数学成绩)Stu(i).score(2)=Val(InputBox(请输入英语成绩)Stu(i).score(3)=Val(InputBox(请输入计算机成绩)Stu(i).score(4)=Val(InputBox(请输入物理成绩)Next iEnd SubFor i=1 To 30 Print Stu(i).no,Stu(i).names,Stu(i).sex,Stu(i).age,Stu(i).score(1),Stu(i).score(2),Stu(i).score(3),Stu(i).score(4)Next i,48,2.以下定义数组或给数组元素赋值的语句中,正确的是 A)Dim a As Variant a=Array(1,2,3,4,5)B)Dim a(10)As Integer a=Array(1,2,3,4,5)C)Dim a%(10)a(1)=ABCDE D)Dim a(3),b(3)As Integer a(0)=0:a(1)=1:a(2)=2:a(3)=3 b=a,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号