数组的概念数组并不是一种数据类型_第1页
数组的概念数组并不是一种数据类型_第2页
数组的概念数组并不是一种数据类型_第3页
数组的概念数组并不是一种数据类型_第4页
数组的概念数组并不是一种数据类型_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 数 组,7.1 概 述 数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置,其表示形式: A(1),A(10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5,Visual Basic中的数组,按不同的方式可分为以下几类: 按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。 按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。 按数组的维数可分为:一维数组、二维数组、多维数组。 对象

2、数组:菜单对象数组、控件数组,7.2 一维数组 7.2.1 一维数组的声明 (无隐式声明) 形式,Dim 数组名(to)As 或: Dim 数组名(to) 例:Dim a(1 to 10) As Integer 声明了a数组有10个元素 与上面声明等价形式: Dim a%(1 to 10,1是下标的下界,10是下标的上界,数组元数的数据类型,说明: 1数组名的命名规则与变量的命名相同。 2数组的元素个数:上界-下界+1。 3缺省为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。其使用格式是: Option Base 0|1 后面的参数只能取0或1 例如: Op

3、tion Base 1 将数组声明中缺省下标设为1 4和不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量,5如果省略As子句,则数组的类型为变体类型。 6数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图5-1所示,7.2.2 一维数组元素的引用 数组必须先定义后使用,使用形式: 数组名(下标) 其中:下标可以是整型变量、常量或表达式。 例如: 设有下面的数组B(10) As Integer 则下面的语句都是正确的。 A(1)=A(2)+B(1)+5 取数组元素运算 A(i)=B(i) 下标使用变量 B(i+1)=A(i+2) 下标使

4、用表达式 引用不能下标越界,P113例,7.2.3 一维数组的基本操作 1. 可通过循环给数组元素的初值 For i = 1 To 10 A数组的每个元素值为1 A(i)=1 Next i 2. 数组的输入 For i = 1 To 4 For j = 1 To 5 sc(i, j) = InputBox(输入sc( ; Next j Print 换行 Next I,4. 求数组中最大元素及所在下标 Dim Max As Integer,iMax As Integer Max=A(1):iMax=1 For i = 2 To 10 If A(i)Max Then Max=A(i) iMax=i

5、 End If Next I 5. 将数组元素倒置,For i =1 To 102 t=A(i) A(i)=A(10-i+1) A(10-i+1)=t Next I,例5.1,7.2.4 一维数组的应用 一、分类统计 例7.2 在例5.1中如果还要统计09,1019,2020,.8089,9099分数段及100分的学生人。 则可另用数组bn来存各分数段的人数,并用bn(0)存09分的人数,bn(1)存1019分的人数,bn(9)存9099分的人数,bn(10)存100分的人数,二、 排序问题 1选择法排序 算法思想: 1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降

6、序)的数,与第1个数交换位置; 2)除第1 个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置; 3)依次类推,选择了n-1次后,这个数列已按升序排列,For i = 1 To n - 1 p = i For j = i + 1 To n If a(p) a(j) Then p = j Next j temp = a(i) a(i) = a(p) a(p) = temp Next i,选择法排序(升序)的VB程序,2冒泡法排序(递增) 算法思想:(将相邻两个数比较,小的调到前头) 1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,

7、最大的数已“沉底”,放在最后一个位置,小数上升“浮起”; 2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,在第j 趟中要进行n-j次两两比较,For i = 1 To n - 1 For j = 1 To n-i If a(j) a(j+1) Then temp=a(j) a(j)=a(j+1) a(j+1)=temp End if Next j Next i,冒泡法排序(升序)的VB程序,例7.3 用随机函数产生50个10,100 )的随机整数,并按照由小到大的顺序打印出来,程序界面如下,7.3 二维

8、数组及多维数组,7.3.1 二维数组的声明,声明格式如下: Dim 数组名( to , to ) As 其中的参数与一维数组完全相同,例如:Dim a(2,3) As Single 二维数组在内存的存放顺序是“先行后列”。例如数组a的各元素在内存中的存放顺序是: a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2) a(1,3)a(2,0)(2,1)a(2,2)a(2,3,7.3.2 二维数组的引用,引用形式: 数组名(下标1,下标2) 例如: a(1,2)=10 a(i+2,j)a(2,3)*2 在程序中常常通过二重循环来操作使用二维数组元素,7.3.3 二维

9、数组的基本操作,二维数组数据的输入 2. 求最大元素及其所在的行和列 3. 计算两矩阵相乘 4. 矩阵的转置,例7.4 设某一个班共有60个学生,期末考试5门课程,请编一程序评定学生的奖学金,要求打印输出一、二等奖学金学生的学号和各门课成绩。(奖学金评定标准是:总成绩超过全班总平成绩20%发给一个奖学金,超过全班总平成绩10%发给二个奖学金。,7.3.5 多维数组的声明和引用,定义多维数组的格式如下: Dim 数组名( to , to ,) As 例如: Dim a(5,5,5) As Integer 声明a是三维数组 Dim b(2,6,10,5) As Integer 声明b是四维数组,7

10、.4 动态数组 动态数组:在声明时未给出数组的大小。定长数组是在程序编译时分配存储空间,而动态数组是在程序执行时分配存储空间。 7.4.1 动态数组的建立及使用 建立动态数组包括声明和大小说明两步: 1在使用Dim、Private或Public语句声明括号内为空的数组。 格式:Dim | Private|Public 数组名()As 数据类型 例:Dim a() As Integer 2在过程中用ReDim语句指明该数组的大小。 格式:ReDim Preserve 数组名(下标1,下标2,Preserve参数:保留数组中原来的数据,例:Redim A(10) Redim Preserve A(

11、20,说明: (1)ReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。 (2)定长数组声时中的下标只能是常量,而动态数组ReDim 语句中的下标是常量,也可以是有了确定值的变量。 例: Private Sub Form_Click() Dim N As Integer N=Val(InputBox(“输入N=?”) Dim a(N) As Integer . End sub,3)在过程中可以多次使用ReDim来改变数组的大小,也可 改变数组的维数。 例:ReDim x(10) ReDim x(20) x(20) = 30 Print x(20) ReDi

12、m x(20, 5) x(20, 5) = 10 Print x(20, 5) (4)每次使用ReDim语句都会使原来数组中值丢失,可以在ReDim后加Preserve 参数来保留数组中的数据。但此时 只能改变最后一维的大小,例5.5,7.4.2 与数组操作有关的几个函数,Aarry函数 Aarry函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定,例如,要将1,2,3,4,5,6,7 这些值赋值给数组a,可使用下面的方法赋值。 Dim a() A=array(1,2,3,4,5,6,7) Dim a A=array(1

13、,2,3,4,5,6,7,2 求数组的上界Ubound( )函数、 下界 Lbound( )函数,Ubound( )函数和Lbound( )函数 分别用来确定数组某一维的上界和下界值。 使用形式如下: UBound(, ) LBound( , ) 其中: :必需的。数组变量的名称,遵循标准变量命名约定。 :可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略默认是1,3Split函数,使用格式: Split( ,) 说明: 使用Split函数可从一个字符串中,以某个指定符号为分隔符,分离若干个子字符串,建立一个下标从零开始的一维数组,7.5 控

14、件数组,7.5.1 控件数组的概念 一组相同类型的控件组成。 它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。 控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。 例: Private Sub cmdName _Click(Index As Integer) If Index=3 then 处理第四个命令按钮的操作 End If End Sub,7.5.2 控件数组的建立 一、在设计时建立控件数组的步骤: 1窗体上画出控件,进行属性设置,这是建立的第一个元素; 2选中该控件,进行“Copy”操作若干次和“Paste”操作若干次建立了所需个数的控件数组元素。 3进行事件过程的编程。 二、运行时添加控件数组的步骤如下,1在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的字体都

温馨提示

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

评论

0/150

提交评论