全国计算机考试第5章数组.ppt

上传人:牧羊曲112 文档编号:6550558 上传时间:2023-11-11 格式:PPT 页数:52 大小:341KB
返回 下载 相关 举报
全国计算机考试第5章数组.ppt_第1页
第1页 / 共52页
全国计算机考试第5章数组.ppt_第2页
第2页 / 共52页
全国计算机考试第5章数组.ppt_第3页
第3页 / 共52页
全国计算机考试第5章数组.ppt_第4页
第4页 / 共52页
全国计算机考试第5章数组.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《全国计算机考试第5章数组.ppt》由会员分享,可在线阅读,更多相关《全国计算机考试第5章数组.ppt(52页珍藏版)》请在三一办公上搜索。

1、第5章 数组,5.1 数组的概念5.2 静态数组5.3 动态数组5.4 控件数组,为什么要使用数组?,变量代表在程序执行过程中其值可以改变的存储单元.问题:输入50个数,放在内存存储单元中?若需要对相同类型的一批数据进行处理,则需要在计算机内存中开辟一块连续的区域对之进行存储.,1.数组的概念,数组:具有相同类型变量的有序集合。这些变量按照一定的规则排列,使用一片连续的存储单元,数据名就是这块存储区域的名称。注:数组名不是代表一个变量,而是有内在联系的一组变量。,2.数组元素与维数,数组元素:数组内的任一成员。下标:确定数组元素在数组中的位置。如果只需一个下标就可以确定一个数组元素在数组中的位

2、置,则该数组称为一维数组。数组元素名的一般形式:数组名(下标)例如:单个下标的数组A有4个元素,则它的元素可表示为:A(0)、A(1)、A(2)、A(3),如果需要两个下标才能确定一个数组元素在数组中的位置,则该数组称为二维数组。二维数组元素名的一般形式:数组名(下标1,下标2)通常把二维以上的数组称为多维数组。如:B(2,3),数组元素与维数(续),5.2 静态数组,VB中两种变量数组:静态数组和动态数组。静态数组大小固定 动态大小不确定,使用前重新定义(定义2次)VB中的对象数组-控件数组,使用数组之前必须对其进行定义(先定义后使用)定义语句格式如下:Dim|Static|Private|

3、Public 数组名(下标1,下标2)As Dim 数组名(下标1)As 一维数组Dim 数组名(下标1,下标2)As 二维数组,5.2.1 静态数组的定义,下标的格式如下:,To 上界1,To 上界2其中,“下界”和关键字“To”可以省略,若程序中无特别声明,表示下标的取值从0开始,等价于“0 To 上界”。Dim A(5)As Integer 等价于 Dim A(0 To 5)As IntegerA为数组名,该数组中有6个数组元素,分别为:A(0)、A(1)、A(2)、A(3)、A(4)、A(5),Dim B(2,1 To 2)As Single等价于 Dim B(0 To 2,1 To

4、2)As Single解析:定义了一个名为B的二维数组,其中有6个数组元素,分别为:B(0,1)、B(0,2)、b(1,1)、B(1,2)、B(2,1)、B(2,2)二维数组:其元素构成一个二维表格或矩阵.数组元素的第一个下标值表示该元素在表格中的行号,第二个下标值表示列号.,数组定义(续),二维数组矩阵,二维数组的元素表示,第1行第2行第3行,第1列第2列,1.数组的上下界数组的上界和下界下界:数组中表示某维最小的下标值;上界:数组中表示某维最大的下标值;注:定义静态数组时,维的上下界必须是常数表达式,不可以是变量名。且下界上界,5.2.2 静态数组的操作,静态数组的操作(续),数组的上界和

5、下界Dim M As Integer Const N=5 As Integer Dim A(N)As IntegerDim B(1 To 6.6)As Integer 四舍五入后维上界7Dim C(1 To 2*3)As StringDim D(0 To M)As Single,数组的维下界,定义数组时,若未指定某维的下界,则下界默认为0设置缺省维下界的数组的维下界为1的方法:在代码窗口通用声明部分写一语句option Base 1 再在cmd1_click()事件过程中进行定义:Dim S(4),B(3,3)as integer 变体型,整型数组,数组的大小,数组的大小即数组所包含的数组元素

6、的个数,也称为数组的长度。数组的大小=第一维大小第二维大小 第N维大小 维的大小=维上界 维下界+1 dim A(6)as integer dim B(3,-1 to 4)as single,2.数组元素的引用,引用形式:数组名(下标表达式)Dim score(3)as integer Dim two(1,1 to 2)as integer score(0)=80:score(1)=score(0)+23 score(2)=87:score(3)=9 two(0,1)=score(0),3.数组的输入/输出操作,(1)一维数组元素的初始化(输入)初始化是给数组成员赋初值。通过循环逐一给数组元素

7、赋值*使用Inputbox接收若干数值*随机产生数值(2)一维数组元素值的显示(输出)*边输入(获得每一元素值后)边输出*获得全部元素值后再输出 窗体/图片框/文本框/Msgbox,实例,在FOR循环中用循环控制变量作为数组元素的下标。边输入边输出 FOR I=0 TO 5 A(I)=INT(99*RND)+1 PRINT A(I);NEXT I,用INPUT函数给数组元素赋值,DIM A(6)as integer,I as integerFOR I=0 to 6 A(I)=inputbox(“给数组元素赋值”,”数组A赋值”)PRINT A(I);NEXT I,例1:输入50个数,按逆序输出

8、,输入使用随机函数,每得到一个数将之赋给数组元素.边输入边输出每个元素值(正序)如何实现逆序输出?,例2 随机产生100个0到9之间的整数,统计并输出每个数出现的次数。,所产生的整数在0-9之中需要10个计数器(计数变量)来存放10个数各自出现的次数(数组元素)a(0)-0 a(1)-1,例3 最值问题(重点算法),编写一个程序,随机产生10个两位正整 数,并从中找出一个最大数和一个最小数。打擂台思想,5.4 控件数组,控件数组由一组相同类型的控件组成,例如一组命令按钮或一组文本框。它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。,1.基本概念,控件共

9、享事件代码,那么如何识别哪个控件执行事件代码呢?,在某个控件识别了一个事件时,VB将调用公 共事件过程,并把该控件的Index属性值传递 给过程,由它指明是哪个控件识别了控件。例:Private Sub Command1_click(Index As Integer)End Sub,2.建立控件数组,方法一:创建同名控件 TEXT1 TEXT2命名(NAME属性)为TEXT1,创建控件数组。INDEX值不同。方法二:复制现存控件,3.使用控件数组,例如:为文本框控件数组的三个元素设置共同字体与大小DIM I AS INTEGERFOR I=0 TO 2 TEXT1(I).FONT.NAME=“

10、隶书”TEXT1(I).FONT.SIZE=20NEXT I,数组第3次课运行时添加和删除控件数组中的控件,Load 对象名(index)向控件数组添加控件对象名 指在数组中添加的控件名称,Index是控件在数组中的索引值。加载新元素到控件数组时,要在程序中将Visible属性设置为TRUE,通过代码安排新元素在窗体上的位置(通过top,left属性)。Unload 对象名(index)删除用Load产生的对象数组元素。例5.2 建立一个动态添加和删除控件数组元素的程序.,【例1】随机生成包含8个元素(全为一位正整数)的数组,要求交换对称位置的元素,并输出交换前后的各元素值。,交换:a(0)-

11、a(7)a(1)-a(6)a(2)-a(5).,数组第二次课生科院,【例2】输出Fibonacci数列的前20项,要求4项一行输出,请使用数组完成,即数组各元素取得各项值,以4个一行的形式输出数组中各元素值。,5.3 动态数组,动态数组:应用中数组的大小不确定.首先定义不指明大小的数组:Public|Private|Dim|数组名()As 数据类型其次,使用ReDim语句动态定义数组的大小。ReDim Preserve数组名(下标1,下标2)As 注意:用Redim语句定义数组时若指定数据类型,应与上面的Dim 数组名()As 数据类型中的数据类型一致,即不允许更换类型.,例:Option B

12、ase 1Private Sub Command1_Click()Dim a()as integerredim a(9)Print a(8)Redim a(2,3)Print a(1,1)End Sub思考:将蓝色语句改为redim a(9)as long是否会出错?,Redim Preserve 数组名(维界定义)As 数据类型Example:动态数组单循环例子(读程序见下页),在使用ReDim语句重新定义数组时,如果需要保留动态数组的内容可采用如下方式:,重新定义数组时可以保留原数组中的内容,单循环例子(读程序),Option Base 1Private Sub Form_Click()D

13、im a()As Integer Dim i As Integer,j As Integer For i=1 To 3 ReDim a(i)思考:redim preserve a(i)a(i)=i Next i Print a(1);a(2);a(3)End Sub,【例3】生成若干个0-99之间的整数存于数组a,删除指定位置的元素,并显示删除前、后结果。,利用循环生成数组各元素值。指定要删除元素的位置删除方法:用后继元素覆盖之 由于数组大小在删除元素后会发生变化,所以应定义为动态数组。,【例4】将某范围内的素数存放到数组中.,从键盘输入一个正整数,找出该数以内的所有素数存放在数组prime中

14、 并将所有找到的素数按每行5个的形式输出到文本框中。输出到当前窗体中。,数组的输入(赋值)与输出(显示)Array函数:给Variant类型的变量或Variant类型的动态数组赋值例:ARRAY赋值.vbp,4.用ARRAY函数给一维数组赋值,一维数组的输入:直接赋值,随机赋值,inputbox赋值,Option Base 1Private Sub Form_Click()Dim A As Variant,I As Integer Dim B()As Variant FontSize=30 A=Array(5,4,3,2,1)Print A(1);A(2);A(3);A(4);A(5)A=Ar

15、ray(1.5!,2.3!,3.6!,4.1!)Print A(1);A(2);A(3);A(4);A=NO ARRAY Print A B=Array(1,2,3,4,5,6)Print B(1)End Sub,数组的输出(元素值的显示),循环控制(下标变量print a(i)For Each Next结构不需要提供初值与终值根据数组元素的个数确定循环执行的次数 For Each v In 数组 v是变体变量 Exit for Next 成员 v必须定义为variant类型,Dim i%,j%Dim b(1 To 2,1 To 3)As IntegerFor i=1 To 2 For j=1

16、 To 3 b(i,j)=i*10+j Print b(i,j);Next j PrintNext i*此方法按行列式的格式输出,二维数组的定义及赋初值,For Each v In b 此结构按列输出二维数组中的各元素 Print v;Next,【例5】随机生成两位正整数,存放到一个4*5的数组中,请按下图所示格式分别将其输出到文本框及图片框中。,5.2.3 数组的常用函数及语句,1.LBound函数 返回指定数组某维的下界值.LBound(数组名,维编号)2.UBound函数 返回指定数组某维的上界值.UBound(数组名,维编号)*缺省时返回第一维上/下界,Erase语句:用于清除指定数组

17、的内容用于静态数组时,将所有数组元素置为默认值用于动态数组时,将删除整个数组结构并释放该数组所占内存。下次引用该动态数组前必须REDIM重新定义。例:Erase.vbp,3.Erase语句,Dim a(3)As Integer,b()As Integer a(1)=1:a(2)=2:a(3)=3 ReDim b(4)Print a(1),a(2),a(3)Erase a,b Print a(1),a(2),a(3)Print b(1)此行出错,部分重点算法:一数组,求其中最大和最小;对一数组排序(选择法、冒泡法)在一数组中查找指定的数(顺序、二分查找)插入,删除删除一数组中重复的数,一维数组的

18、应用,【例6】选择排序法,基本思想:设在数组S中存放n个无序的数,要求将这n个数按升序(从小到大)重新排列。第一轮比较:使得s(1)为所有元素中最小的.用s(1)与s(2)比较,若s(1)s(2),则交换两个元素中的值,然后继续用s(1)与sort(3)比较,若s(1)s(3),则交换这两个元素的值。依此类推,直到s(1)与s(n)进行比较处理后,s(1)中存放了这n个数中的最小数。第二轮比较,s(2)依次与比较总共通过n-1轮比较,得到一个从小到大排列的有序序列。,【例7】数组元素的插入,(1)将任意一整数插入到数组中,由用户指定插入的数据作为第几个元素(2)已知一按升序排好的包含有10个元

19、素的数 组,将某一整数插入到该数组中,基本思路:首先要找到插入位置.以升序为例.,【例8】数据检索问题(顺序查找法),基本思想 对所存储的数据从第一项开始,依次与所要检索的数据进行比较,直到找到该数据,或将全部元素都找完还没有找到该数据为止。将元素显示在列表框中.结果显示在文本框中,结果格式为:23找到了,为元素a(5)。,【例9】二分查找(要求数组已排好序)算法说明:给定一组数据,查找是否存在指定的某个值,二分法查找要求这组数据必须已经是排好序的,每次将查找范围一分为二,直到找到或查询了所有区间也没有找到要查找的数为止。,具体思路为:假设给定的一组数据存放在数组A中,需要查找的数为x。设定三

20、个下标left(初始值为0)、right(初始值为数组A的上界)、Mid分别指向查找区间的左端、右端和中间位置。计算Mid=,比较x和AMid的大小,*若Find=AMid,则要查找的数已经找到;*若FindAMid,说明需要查找的数应当在Mid和right区间,则left=mid+1;重复以上步骤,每次查找区间减少一半,直到找到或者LeftRight(表示找不到,停止查找)。,【例10】:使用冒泡(起泡)法对10个整数(数组元素)从小到大排序,并输出排序前后数组中元素的值。起泡法的思路是:将相邻两个数比较,将小的调到前头。,排序通常分为以下3个步骤:将需要排序的n个数存放到一个数组中(设x数

21、组)。将x数组中的元素从小到大排序,即x(1)最小、x(2)次之、x(n)最大。将排序后的x数组输出。,在第一轮比较中进行两两比较_次,在第二轮中比较_次,第4轮中比较_次.如果有n个数,则要进行_轮比较,用i表示轮次,在第i轮比较中要进行_次两两比较.,二维数组的应用:,1.生成一个3*4的二维数组,求出该数组中所有元素的和sum1,所有靠边元素的和sum2。2.求二维数组a的转置矩阵b。3.求二维数组中每行的最大值及其所在的位置(列).4输出杨辉三角形5生成一个4*5的二维数组,找出二维数组的所有鞍点。所谓鞍点是指该位置的数在该行上最大,而在该列上最小。6.利用随机函数生成一个由1,9之间的正整数构成的4行5列矩阵,求出矩阵行的和为最大和最小的行,并调换这两行的位置。,一维数组的应用:,1随机生成包含10个无重复元素的数组,要求元素在0,9之间。2使用冒泡(起泡)法对10个整数(数组元素)从小到大排序,并输出排序前后数组中元素的值。3数组合并4.删除一数组中重复的数,字符数组的应用:,1用户由文本框输入一串英文字符,统计其中各英文字母出现的次数。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号