第06章数组ppt课件_第1页
第06章数组ppt课件_第2页
第06章数组ppt课件_第3页
第06章数组ppt课件_第4页
第06章数组ppt课件_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

1、Visual Basic第六章 数组数组的概念数组是变量的集合。数组是变量的集合。 该集合中的一切变量称号一样、类型一样,该集合中的一切变量称号一样、类型一样,下标不同。下标不同。例如:例如:w ( 2 )x(100, 20)数组名下标行标列标两种数组静态数组:静态数组:在运转时总是坚持固定的大在运转时总是坚持固定的大小。小。动态数组:动态数组:在运转时数组的大小可以改在运转时数组的大小可以改动。动。数组的维数一维数组 数组元素具有一个下标。二维数组 数组元素具有两个下标。 n 维数组 数组元素具有 n 个下标。例如:a (3)一维数组b (12, 5)二维数组c (2, 4, 8)三维数组m

2、 (2, 3, 6) n 维数组数组的声明数组必需数组必需先声明、后运用。先声明、后运用。 声明数组的四个属性l 称号称号l 维数维数l 大小大小l 类型类型数组的声明数组声明时的语法:Dim 数组名(下标,下标) As 类型阐明:1、“下标的普通方式为:下界 To 上界假设不显式指定下标的“下界,那么缺省的下标下界为 0。2、数组声明后,数值数组中的全部元素都初始化为 0,字符串数组中的全部元素都初始化为空字符串。例如:例如:Dim x As Single, a(4) As Single, b(4, 1) As Singlea(0)a(1)a(2)a(3)a(4)b(0,0)b(0,1)b(

3、1,0)b(1,1)b(2,0)b(2,1)b(3,0)b(3,1)b(4,0)b(4,1)数组的声明x留意:留意: 运用运用 Option Base 语句指定数组的下标下界从语句指定数组的下标下界从 1 开场。开场。Option Base 1Dim a(4) As Single, b(-2 To 2, 2) As Single数组的声明a(1)a(2)a(3)a(4)b(-2,1)b(-2,2)b(-1,1)b(-1,2)b(0,1)b(0,2)b(1,1)b(1,2)b(2,1)b(2,2)数组每一维的大小为:上界下界 + 1 。整个数组的大小为: 各维大小的乘积。数组的大小数组元素的援用

4、援用一维数组元素的方式为:数组名(下标表达式)留意:数组的下标必需为整数,下标表达式应为数值型表达式,假设下标表达式的值不为整数,那么 VB 会自动取整。例如:Dim x(10) As Integer 声明 x 数组有11个元素x(10) = 100 对 x(10) 这个数组元素赋值逆序打印 n 个整数Dim n As Integer, a(100) As Integer, i As Integer n = InputBox(vbCrLf + vbCrLf + n=) Print: Print 正序打印正序打印 For i = 1 To n a(i) = i Print a(i), Next

5、i Print: Print: Print 逆序打印逆序打印 For i = n To 1 Step -1 Print a(i), Next i逆序打印 n 个整数a(0)a(1)a(2)a(n)一维数组习题课 题型:求和例题:从键盘上输入例题:从键盘上输入 n 个同窗的考试成果,输出高于平均成果个同窗的考试成果,输出高于平均成果的分数。的分数。 n aver Then Print score(i); Next i 题型:求和 题型:搜索例题:将 n 个n max Then max = a(i) If a(i) min Then min = a(i) Next i Print “最大值为最大值

6、为 ; maxPrint “最小值为最小值为 ; min 题型:最大值和最小值 增删数组元素的值n 删除数组元素的值删除数组元素的值n 插入数组元素的值插入数组元素的值n 附加数组元素的值附加数组元素的值 题型:删除数组中的数据例题:将 n 个n = 1 And x = 3a(x) = a(x) + 1x = InputBox(vbCrLf + 请输入一个数请输入一个数)LoopPrint “1 的数目:的数目:; a(1)Print “2 的数目:的数目:; a(2)Print “3 的数目:的数目:; a(3)End Sub题型:统计 按分数段统计学生成果例题:统计各分数段例题:统计各分数

7、段059、6069、7079、8089、90100的学生人数。学生成果从键盘输入,以的学生人数。学生成果从键盘输入,以 1 为终止标为终止标志。志。Private Sub Command开场开场_Click()Dim a(10) As Integer, x As Integer, i As IntegerFor i = 0 To 10a(i) = 0Next ix = InputBox(vbCrLf + “请输入学生成果请输入学生成果)Do While x -1a(Int( x/10) = a( Int(x/10) ) + 1x = InputBox(vbCrLf + “请输入学生成果请输入学

8、生成果)LoopPrint “0 59 =; a(0)+a(1)+a(2)+a(3)+a(4)+a(5)Print “60 69 =; a(6) Print “70 79 =; a(7) Print “80 89 =; a(8) Print “90 100 =; a(9) + a(10)End Sub 按分数段统计学生成果例题:用挑选法求例题:用挑选法求1000以内的一切素数。以内的一切素数。算法:算法:1将数将数21000放入放入“筛中;筛中;2找出其中最小的数素数,然后筛去其一切倍数。找出其中最小的数素数,然后筛去其一切倍数。3反复第二步,直至反复第二步,直至“筛中为空。筛中为空。Priv

9、ate Sub Command开场开场_Click()Dim a(2 To 1000) As Integer, i As Integer, j As IntegerFor i = 2 To 1000a(i) = iNext i用挑选法求素数For i = 2 To 1000If a(i) 0 ThenPrint a(i);For j = a(i) To 1000 Step a(i) a(j) = 0Next jEnd IfNext i : PrintEnd Sub用挑选法求素数 题型:排序n 选择法排序n 冒泡法排序选择法排序例题:利用随机函数产生例题:利用随机函数产生 20 个个 2 位的随

10、机整数,按从大到小位的随机整数,按从大到小的顺序进展排序。的顺序进展排序。Private Sub Command开场开场_Click() Dim a(20) As Integer, i As IntegerDim j As Integer, k As Integer Randomize For i = 1 To 20 a(i) = 10 + Int(90 * Rnd) Print a(i); Next i: Print: PrintFor i = 1 To 19 For j = i + 1 To 20 If a(i) a(j) Then k = a(i): a(i) = a(j): a(j)

11、= k End If Next j Print a(i); Next i: Print a(20)End Sub选择法排序冒泡法排序例题:利用随机函数产生例题:利用随机函数产生 20 个个 2 位的随机整数,按从大到小位的随机整数,按从大到小的顺序进展排序。的顺序进展排序。Private Sub Command开场开场_Click() Dim a(20) As Integer, i As IntegerDim j As Integer, k As Integer Randomize For i = 1 To 20 a(i) = 10 + Int(90 * Rnd) Print a(i); Ne

12、xt i: Print: Print For i = 20 To 2 Step -1 For j = 1 To i - 1 If a(j) a(j) Then t = a(i): a(i) = a(j): a(j) = t End If Next j Print a(i); Next i: Print a(n)题型:数组中插入数据 x = InputBox(X=) Print: Print X=; x t = 1 While x a(t) And t n Then n = n + 1 a(n) = x题型:数组中插入数据 Else For i = n To t Step -1 a(i + 1)

13、 = a(i) Next i a(t) = x: n = n + 1 End If Print: Print 插入数组元素插入数组元素 X 后后 For i = 1 To n Print a(i); Next iEnd Sub题型:数组中插入数据二维数组习题课二维数组ij 写出以下程序的运转结果Private Sub Command开场开场_Click() Dim a(2, 3) As Integer, i As Integer, j As Integer For i = 1 To 2 For j = 1 To 3 a(i, j) = i + j Print a(i, j); Next j P

14、rint Next iEnd Sub 主、次对角线 主、次对角线Dim a(10, 10) As Integer, i As Integer, j As Integer For i = 1 To 10 For j = 1 To 10 If i = j Or i = 11 - j Then a(i, j) = 1 Else a(i, j) = 0 End If Print a(i, j); Next j: Print Next i 题型:矩阵相加Private Sub Command开场开场_Click()Dim a(4, 4) As Integer, b(4, 4) As IntegerDim

15、 c(4, 4) As Integer, i As Integer, j As IntegerPrint A 矩阵矩阵For i = 1 To 4 For j = 1 To 4 a(i, j) = (i - 1) * 4 + j Print a(i, j), Next j: Print Next i 题型:矩阵相加Print B 矩阵矩阵For i = 1 To 4 For j = 1 To 4 b(i, j) = i * 10 + j Print b(i, j), Next j: Print Next i 题型:矩阵相加Print C 矩阵矩阵For i = 1 To 4 For j = 1

16、 To 4 c(i, j) = a(i, j) + b(i, j) Print c(i, j), Next j: Print Next iEnd Sub 题型:矩阵相加 题型:矩阵转置Private Sub Command开场开场_Click()Dim a(2, 4) As Integer, b(4, 2) As IntegerDim i As Integer, j As IntegerPrint A 矩阵矩阵For i = 1 To 2For j = 1 To 4a(i, j) = (i - 1) * 4 + jPrint a(i, j),Next j: PrintNext i 题型:矩阵转

17、置Print B 矩阵矩阵For i = 1 To 4For j = 1 To 2b(i, j) = a(j, i)Print b(i, j),Next j: PrintNext iEnd Sub 题型:矩阵转置扬辉三角形Private Sub Command开场开场_Click()Dim a(10, 10) As IntegerDim i As Integer, j As Integera(1, 1) = 1:Print Tab(30); a(1, 1)a(2, 1) = 1: a(2, 2) = 1Print Tab(27); a(2, 1); Tab(33); a(2, 2)扬辉三角形F

18、or i = 3 To 10a(i, 1) = 1For j = 2 To i - 1a(i, j) = a(i - 1, j - 1) + a(i - 1, j)Next ja(i, i) = 1For j = 1 To iPrint Tab(27 - 3 * i + j * 6); a(i, j);Next j: PrintNext iEnd Sub扬辉三角形动态数组的特点:声明时,不确定数组的大小。运转时,再确定数组的大小。动态数组的定义分为两步:第一步:声明一个没有下标参数的数组。格式为:Dim 数组名() As 类型第二步:援用数组前用 ReDim语句重新定义。格式为:ReDim P

19、reserve 数组名(下标,下标As 类型动态数组动态数组何时运用动态数组?在程序运转前无法确定数组的大小时。动态数组例如:例如:Private Sub Command1_Click() Dim a() As Integer Dim n As Integer n = Val(InputBox( input n ) ReDim a(n) End Sub阐明:阐明:1、Dim语句是阐明性语句,可出如今过程内或通用声明段。语句是阐明性语句,可出如今过程内或通用声明段。 ReDim语句是执行语句,只能出如今过程内。语句是执行语句,只能出如今过程内。2、可多次改动动态数组的大小和维数。、可多次改动动态

20、数组的大小和维数。 但不能改动动态数组的数据类型,除非动态数组被声明为但不能改动动态数组的数据类型,除非动态数组被声明为Variant类型。类型。3、运用、运用ReDim语句会使原来数组中的值丧失,可以在语句会使原来数组中的值丧失,可以在ReDim语句后加语句后加Preserve参数来保管数组中的数据。运用参数来保管数组中的数据。运用Preserve参参数时只能改动最后一维的大小,前面几维大小不能改动。数时只能改动最后一维的大小,前面几维大小不能改动。 动态数组动态数组4、在ReDim语句中,动态数组的下标可以是常量,变量必需有确定的值。5、静态数组在编译时分配数组存储空间, 动态数组在运转时

21、分配数组存储空间。 求二维数组的和 求二维数组mn每行元素之和、每列元素之和、一切元素之和。m、n由键盘输入,数组元素的值为两位随机整数。00 求二维数组的和Dim a() As Integer, i As Integer, j As Integer m = InputBox(M=) n = InputBox(N=) ReDim a(m, n) For i = 0 To m a(i, 0) = 0 Next i For j = 0 To n a(0, j) = 0 Next j 求二维数组的和 For i = 1 To m For j = 1 To n a(i, j) = Int(Rnd *

22、90 + 10) Print a(i, j); a(i, 0) = a(i, 0) + a(i, j) a(0, j) = a(0, j) + a(i, j) a(0, 0) = a(0, 0) + a(i, j) Next j: Print Next i: Print 求二维数组的和 For i = 0 To m For j = 0 To n Print Tab(8 * j); a(i, j); Next j: Print Next I留意:数组元素的值均为两位整数,简单地运用紧凑打印格式即可打印整齐。但和有能够为三位或四位整数,必需运用Tab函数定位才干打印整齐。 求二维数组的和 最大值和

23、最小值 求二维数组mn每行元素的最大值、每列元素的最小值。m、n由键盘输入,数组元素的值为两位随机整数。00 最大值和最小值 最大值和最小值 Dim a() As Integer, i As Integer, j As Integer, t As Integer m = InputBox(M=) n = InputBox(N=) ReDim a(m, n) For i = 1 To m For j = 1 To n a(i, j) = Int(90 * Rnd + 10) Print a(i, j); Next j: Print Next i: Print 最大值和最小值 For i = 1

24、To m a(i, 0) = a(i, 1) For j = 2 To n If a(i, j) a(i, 0) Then a(i, 0) = a(i, j) End If Next j Next i 最大值和最小值 For j = 1 To n a(0, j) = a(1, j) For i = 2 To m If a(i, j) a(0, j) Then a(0, j) = a(i, j) End If Next i Next j 最大值和最小值 For i = 0 To m For j = 0 To n If i = 0 And j = 0 Then Print ; Else Print

25、 a(i, j); End If Next j: Print Next i两个函数这两个函数是配合动态数组运用的。语法:Lbound(数组名, 维数)功能:求数组某一维的下标下界。语法:Ubound(数组名, 维数)功能:求数组某一维的下标上界。例如:Lbound(x, 1) 求x数组第一维的下界值。Ubound(x, 2) 求x数组第二维的上界值。数组的初始化可以运用Array函数给数组元素赋初值:Dim ib As Variant ib = Array(abc, def, 67) For i = 0 To UBound(ib) Picture1.Print ib(i); ; Next I留

26、意:1、利用Array函数对数组各元素赋值,声明的数组必需是动态数组连圆括号都可省,并且其类型只能是Variant。2、数组的下界为零,上界由 Array 函数括号内参数的个数决议,也可经过 Ubound 函数获得。例如:例如:Dim a() As Variant, b() As Varianta = Array(1, 2, 3, 4, 5)ReDim b(UBound(a)b = a 阐明:阐明:1、只能对动态数组整数组赋值。、只能对动态数组整数组赋值。2、赋值号两边数组的数据类型必需一致。、赋值号两边数组的数据类型必需一致。3、赋值时,系统自动将赋值号左边的数组、赋值时,系统自动将赋值号左

27、边的数组ReDim成赋成赋值号右边数组的大小。养成一个好习惯,数组对数组的赋值值号右边数组的大小。养成一个好习惯,数组对数组的赋值时,两个数组的类型、维数和大小应一致时,两个数组的类型、维数和大小应一致数组对数组赋值控件数组控件数组为我们处置功能相近的控件提供了极大的方便。控件数组由一组一样类型的控件组成,这些控件共用一个控件数组名字,具有类似的属性设置,共享同样的事件过程。控件数组中各个控件相当于普通数组中的各个元素,同一控件数组中各个控件的 Index 属性相当于普通数组中的下标。建立控件数组的两种方法:方法一:复制已有的控件并将其粘贴到窗体上。方法二:将窗体上已有的类型一样的多个控件的 Name 属性设为同一个值。控件数组的建立 控件数组的事件过程 控件数组共享同样的事件过程,经过前往的下标值区分控件数组中的各个元素。 例如:Private Sub cmdName _Click(Index As Integer) If Index = 3 then 处置第四个命令按钮的操作 End If End Sub计算器设计一个简易计算器,能进展整数的加、减、乘、除运算。界面设计如下:一个文本框用于计算器输出;数字按钮

温馨提示

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

评论

0/150

提交评论