ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:362.43KB ,
资源ID:17079368      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17079368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第六章 数组Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第六章 数组Word格式.docx

1、正因为数组元素的下标可以是变量,所以与简单变量相比,下标变量有不少方便之处。例如a(i)是数组a的一个元素,当i取不同的值时,它就表示不同的数组元素,如i=0,表示a(0),i=1,表示a(1),等等,使用时只要有规则地改变下标值,就可以方便地使用a(i)引用数组a中的所有元素。2数组的维数如果数组元素只有一个下标,则称这个数组为一维数组。如数组s有5个元素:s(0)、s(1)、s(2)、s(3)、s(4),依次保存5个学生的一门功课的成绩,则s为一维数组。一维数组中的各个元素又称为单下标变量。一维数组中的下标又称为索引(Index)。 如果一个导师带有4个研究生,每个学生一学期选修有5门功课

2、,要存储所有学生各门功课的成绩,可以使用有两个下标的数组来表示,如第i个学生第j门功课的成绩可以用s(i,j)表示。其中i表示学生顺序号,称为行下标(i=0,1,2,3);j表示课程序号,称为列下标(j=0,1,2,3,4)。这4个研究生一学期的学习成绩可以用一个矩阵表示如下:s(0,0) s(0,1) s(0,2) s(0,3) s(0,4)s(1,0) s(1,1) s(1,2) s(1,3) s(1,4)s(2,0) s(2,1) s(2,2) s(2,3) s(2,4)s(3,0) s(3,1) s(3,2) s(3,3) s(3,4)这样每个元素用两个下标的数组称为二维数组,其元素又

3、称为双下标变量。数组元素中下标的个数称为数组的维数。在VB中最多可以使用16位数组。数组元素在内存中占用一片连续的存储空间,而分配空间的大小由数组维数及下标的最大值和小值确定。因此,又把数组下标的最大值称为下标的上界,下标的最小值称为下标的下界。若一个数组定义之后,元素个数在程序运行过程中保持不变,这样的数组称为固定大小数组,简称固定数组;若一个数组定义之后,元素个数在程序运行过程中可以改变的,这样的数组称为动态数组。6.2 数组的声明和应用6.2.1 数组声明语句Dim语句除用于定义变量的类型外,还可用于定义数组,确定数组的维数及每一维元素的个数,以便在内存分配相应的存储空间,存放数组中的数

4、据。使用Dim定义数组有两种方式。指定下标的上界定义数组时,指定下标的最大值(上界),而下标的最小值(下界)为默认值。一维数组的定义格式:Dim 数组名(下标上界) As 类型名二维数组的定义格式:Dim 数组名(第一维的下标上界,第二维的下标上界) As 类型名说明:这里只给出了下标的上界,而下标的下界默认从零开始。可以借助Option Base命令人为地选择下标从0开始或则从1开始。格式为:Option Base n这里n只能是0或1。若n=1,则程序中定义的所有数组的各维下标都是从1开始(若n=0,则该语句是多余的,因为不说明,默认下标值从0开始)。定义数组下标的上、下界值不得超过Lon

5、g数据类型能表示的范围。Dim Sum(10) As Long 定义长整型一维数组,共11个元素,下标从010Dim M(3,4) As Integer 定义整型45的二维数组,共20个元素指定下标的取值范围定义数组时指定下标的上界、下界(-3276832768)。Dim 数组名(下标下界 To 下标上界)Dim 数组名(下标下界 To 上界,第二维的下界 To 上界)例如:Dim a(-3 to 6) As Integer 定义整型一维数组,共10个元素,下标从-36Dim M(1 To 10,1 To 10) As Double 定义1010的二维数组,共100个元素Dim D(1 To

6、3,1 To 10,1 To 5) 定义3105的三维数组,共150个元素 数组一旦定义之后,即刻分配存储并初始化各元素,这与定义变量相同,数值型数组的各元素都初始化为0,字符型数组的各元素都初始化为空。引用数组元素时,数组名、数组类型、数组维数、使用的下标(索引号)的范围都必须与数组声明一致。例6-1 随机产生10个两位数,找出其最大值、最小值和平均值。分析:在这里我们使用含有10元素的数组来存储产生的10个随机数,然后求出这10个元素中的最大值、最小值和平均值。设计步骤如下:创建一个工程,在窗体上添加一个框架Frame1、4个标签Label1Label4、3个文本框Text1Text3、3

7、个命令按钮Command1Command3。程序用户界面如图6-2所示。图6-2 求最大值、最小值和平均值编写程序代码。在窗体模块的通用段声明数组,保证各个过程都能使用该数组。编写窗体的Load事件过程,设置控件的有关属性。代码如下:Dim a(9) As IntegerPrivate Sub Form_Load() Frame1.Caption = 10个随机数 Label2.Caption = 最大值 Label3.Caption = 最小值 Label4.Caption = 平均值 Text1.Text = Text2.Text = Text3.Text = Text1.Locked =

8、 True Text2.Locked = True Text3.Locked = True Command1.Caption = 重置 Command2.Caption = 计算 Command3.Caption = 关闭End Sub编写窗体的Activate事件过程,产生随机数,为数组各元素赋值。Private Sub Form_Activate() Dim p As String, i As Integer Randomize Time p = For i = 0 To 9 Do x = Int(Rnd * 90) + 10 yes = 0 For j = 0 To i - 1 If x

9、 = a(j) Then yes = 1: Exit Do 如与前面元素相同,重新产生随机数 Next Loop While yes = 1 a(i) = x p = p & Str(a(i) & , Label1.Caption = LTrim(Left(p, Len(p) - 1)编写“重置”命令按钮Command1的Click事件过程,重新为数组元素赋值,并清除文本框显示的数据。Private Sub Command1_Click() Form_Activate编写“计算”命令按钮Command2的Click事件过程,求最大值、最小值及平均值。Private Sub Command2_C

10、lick() Dim max As Integer, min As Integer, s As Single, i As Integer min = 100: max = 10: s = 0 If a(i) max Then max = a(i) If a(i) min Then min = a(i) s = s + a(i) Text1.Text = max Text2.Text = min Text3.Text = s / 10最后编写“关闭”命令按钮Command3的Click事件过程,退出程序。Private Sub Command3_Click() Unload Me程序运行情况如图

11、6-2所示。说明:在VB中,数组与变量一样,随着定义的位置和形式的不同,有着不同的作用范围。可以用Public定义全局数组。在程序模块(包含有程序代码的程序文件,如窗体文件.frm)的通用段,即在程序代码的起始部分,且不在任何过程内,用Public语句声明的数组为整个应用程序均可以访问的公用数组(全局数组),格式为:Public 数组名(维数及下标范围) As 类型这里的维数及下标范围与上面用Dim定义数组的形式相同。同样,用Public定义的变量为全局(公用)变量。用Private或Dim定义模块级数组。在程序模块的通用段用Private或Dim语句定义的数组都是在该程序模块内,各过程块可以

12、访问的模块级数组,其格式与我们上面介绍地Dim定义数组的格式相同:Private|Dim 数组名(维数及下标范围) As 类型用Private或Dim定义局部数组。在某个过程内用Private或Dim定义的数组为该过程的局部数组,只能在定义的过程内访问局部数组,当过程执行结束后,所定义的数组也就从内存中被自动清除掉。定义格式同上。也可以用Static 语句定义数组,所定义的数组称为静态数组,与静态变量一样,在过程中使用,在整个代码运行期间都能保留使用Static 语句声明的数组各元素的值,直至该模块复位或重新启动。要注意区分静态数组和固定数组是不同的两个的概念,前者是指数组中的各个元素都是静态

13、变量,后者是指数组元素的个数保持不变。6.2.2 Array函数在VB程序中常通过赋值语句或InputBox函数为变量或数组元素赋值。也可以用Array函数,根据数据表生成一个一维数组。Array函数返回一个包含数组的Variant, 其使用格式为:变体名=Array(数据表)其中,“变体名”是预先定义的类型为变体的数组名,“数据表”是一个用逗号隔开的值表,这些值用于给函数返回的Variant所包含的数组各元素赋值。例如,创建一个工程,为窗体编写Load事件过程如下: Dim a As Variant, b As Variant Show a = Array(1, 2, 3, 4) 生成数组a

14、 b = Array(This, ArrayStringVariant) 生成数组b For i = 0 To 3 Print a(i); Spc(2); b(i)程序运行后,窗体上显示情况如图6-3所示。图6-3 使用Array函数生成数组使用Array函数时,“变体名”后面不能有括号,也没有维数和上界,下界默认为0或由Option Base语句决定。Array函数只能根据数据表生成一个一维数组,不能生成二维数组或多维数组。数据表中各个数据的类型可以相同,也可以不同。6.2.3 数组的应用例6-2 斐波那契(Fibonacci)数列如下:1,1,2,3,5,8,13,21,试求出该数列的前3

15、0项。由数列的前几项可知,该数列的第1、2项均为1,从第3项开始,以后各项都等于前两项之和。如果用数组f(0)、f(1)、f(2)、f(n)来存储该数列的各项,则计算第i项的递推公式为:f(i)=f(i-1)+f(i-2)。设计步骤:创建一个工程,在窗体上添加一个列表框List1(输出计算结果)、一个标签Label1和一个命令按钮。程序的用户界面如图6-4所示。图6-4 求Fibonacci数列前30项编写窗体的Load事件过程,设置控件的属性。 Label1.Caption = 单击“计算”命令计算斐波那契数列的前30项编写“计算”命令按钮的Click事件过程,计算数列各项。 Dim n A

16、s Integer, i As Integer, p As String Dim f(29) As Currency f(0) = 1: f(1) = 1第 + Format(1, ) + 项: + Space(4) + Format(f(0), #) List1.AddItem p, 0 + Format(2, + Space(4) + Format(f(1), List1.AddItem p, 1 For i = 2 To 29 f(i) = f(i - 1) + f(i - 2) + Format(i + 1, + Space(4) + Format(f(i), List1.AddIte

17、m p, i程序运行情况如图6-4所示。例6-3 假设有10名学生的考试成绩为89,96,81,67,79,90,63,85,95,83,请按由高分到低分的顺序在窗体上输出。先将这10个分数放入数组a中,再对数元素a(0),a(1),a(2),a(9)进行排序处理。排序的方法很多,在这里我们选用“选择排序法”,其具体步骤为:令k=0,a(k)与a(1)比较,若a(k)a(1),令k=1,值大的元素的下标存放在k中; a(k)又与a(2),a(3),直到a(9),重复的工作,结束后,实现10个数中的最大元素的下标存放在k中,即a(k)为数组的最大值元素;a(0)与a(k)交换,把最大值存放在a(

18、0)中;分别令k=1,2,3,8重复的操作。这个方法实质是用一个变量k保存当前较大元素的下标,不进行交换,直到完成一次内循环的比较后,k保存的是当前最大元素的下标,把a(k)交换到希望的位置a(i)。选择排序法的操作流程如图6-5所示。图6-5 选择排序法流程 图6-6 例6-3程序运行情况创建一个工程。直接在窗体上输出排序结果,不添加任何控件。编写窗体的Load事件过程,生成数组,完成排序,并输出排序结果。 Dim i As Integer, j As Integer, k As Integer Dim a As Variant, t As Integer a = Array(89, 96,

19、 81, 67, 79, 90, 63, 85, 95, 83) Form1.Caption = 选择排序法 Print 排序前: Print For i = 0 To 8 k = i For j = i + 1 To 9 If a(k) a(j) Then k = j t = a(k): a(k) = a(i): a(i) = t排序后:程序运行情况如图6-6所示。例6-4 随机产生25个小于100的整数,组成一个55的方阵,求对角线上元素之和、对角线上元素之积和方阵中最大的元素。方阵中的元素可以用一个二维数组表示。通过循环操作为各元素赋值,然后计算对角线上元素之和、对角线上元素之积和方阵中

20、最大的元素。创建一个工程,在窗体上添加一个框架Frame1、一个列表框List1(放置在框架内,输出方阵)、4个标签Label1Label4、2个命令按钮Command1Command2、3个文本框Text1Text3(输出矩阵计算结果)。程序界面如图6-7所示。图6-7 矩阵计算声明模块级的二维数组,编写窗体的Load事件过程,设置控件的有关属性。Dim a(1 To 5, 1 To 5) As Integer Private Sub Form_Load() 初始化,生成方阵随机产生的5阶方阵按“计算”按钮可以得到对象线上元素的和、积以及方阵中的最大元素对角线上元素的和对角线上元素的积方阵中

21、的最大元素编写窗体的Activate事件过程,清除列表框和文本框显示的数据,生成方阵。 Dim p As String, i As Integer, j As Integer List1.Clear For i = 1 To 5 For j = 1 To 5 a(i, j) = Int(Rnd * 99) + 1 Format(a(i, j), ! List1.AddItem p, i - 1编写“计算”命令按钮Command1的Click事件过程,计算对象线上元素的和、积以及方阵中的最大元素,并输出计算结果。Private Sub Command1_Click() Dim s As Inte

22、ger, t As Long, i As Integer, j As Integer Dim Max As Integer, p As Integer, q As Integer s = 0: t = 1 For i = 1 To 5 求对角线之和、积 s = s + a(i, i) t = t * a(i, i) Max = 0 For i = 1 To 5 求方阵中的最大元素 If Max a(i, j) Then Max = a(i, j) p = i q = j End If Text1.Text = s Text2.Text = ta( & p & q &)编写“重置”命令按钮Com

23、mand2的Click事件过程,生成新的方阵。Private Sub Command2_Click() 程序运行情况如图6-7所示。6.3 动态数组及声明在程序设计时,数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时,程序具有改变数组大小的能力。动态数组就可以在任何时候改变其大小。在Visual Basic程序中,动态数组灵活、方便,有助于内存的管理。6.3.1 建立动态数组创建动态数组分两步进行:声明动态数组。如果希望数组为公用数组,则用Public语句声明数组,如果希望数组为模块级,则在模块级用Dim或Private语句声明数组,如果希望数组为局部数组,则在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。Dim DynArray()用ReDim语句分配实际的元素个数。ReDim Preserve 数组名(维数与下标范围) As 类型x=9ReDim DynArray (x + 1) 把DynArray定义为一维数组,有11个元素ReDim DynArray (4,4) 把DynArray定义为55的二维数组,有25个元素ReDim语句只能出现在过程中。与Dim语句、Static语句不同,R

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1