第五章数组 51概述 数组的概念:数组并不是一种数据类型,而 是一组相同类型数据的集合。用一个统一的名字 (数组名)代表逻辑上相关的一批数据,每个元 素用下标变量来区分;下标变量代表元素在数组 中的位置。 其表示形式: A(1),A(10) X(1,1),ⅹ1(1,10),Ⅹ(2,10) Y(0,0,0),Y(1,2,5)
第五章 数 组 5.1 概 述 数组的概念:数组并不是一种数据类型,而 是一组相同类型数据的集合。用一个统一的名字 (数组名)代表逻辑上相关的一批数据,每个元 素用下标变量来区分;下标变量代表元素在数组 中的位置。 其表示形式: A(1),A(10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5)
Visual basic中的数组,按不同的方式可分为 以下几类: 按数组的大小(元素个数)是否可以改变来 分为:定长数组、动态(可变长)数组。 按元素的数据类型可分为:数值型数组、字 符串数组、日期型数组、变体数组等。 按数组的维数可分为:一维数组、二维数组 多维数组 对象数组:菜单对象数组、控件数组
Visual Basic中的数组,按不同的方式可分为 以下几类: ➢按数组的大小(元素个数)是否可以改变来 分为:定长数组、动态(可变长)数组。 ➢按元素的数据类型可分为:数值型数组、字 符串数组、日期型数组、变体数组等。 ➢按数组的维数可分为:一维数组、二维数组、 多维数组。 ➢对象数组:菜单对象数组、控件数组
52一维数组 521一维数组的声明 形式 Dim数组名(to]上界>)As 或:Dim数组名数据类型符>(K下界>to) FF Dim a(] to 10) As Integer 声明了a数组有10个元素 数组元数的数据类型 1是下标的下界 10是下标的上界 与上面声明等价形式:Dima%(lto10)
5.2 一维数组 5.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 O[ 后面的参数只能取0或1 例如: Option Base1'将数组声明中缺省下标设为1 4.和不能使用变量,必须是常量,常量可 以是直接常量、符号常量,一般是整型常量
说明: 1.数组名的命名规则与变量的命名相同。 2.数组的元素个数:上界-下界+1。 3.缺省为0,若希望下标从1开始,可在模块的通用 部分使用Option Base语句将设为1。其使用格式是: Option Base 0|1 ' 后面的参数只能取0或1 例如: Option Base 1 ' 将数组声明中缺省下标设为1 4.和不能使用变量,必须是常量,常量可 以是直接常量、符号常量,一般是整型常量
5.如果省略As子句,则数组的类型为变体类型 6.数组中各元素在内存占一片连续的存储空间, 一维数组在内存中存放的顺序是下标大小的顺序, 如图5-1所示: A(o)+ (1)4 A(2)中 图5-1数豭中吝元素的存顺
5.如果省略As子句,则数组的类型为变体类型。 6.数组中各元素在内存占一片连续的存储空间, 一维数组在内存中存放的顺序是下标大小的顺序, 如图5-1所示:
522一维数组元素的引用 使用形式:数组名(下标) 其中:下标可以是整型变量、常量或表达式。 例如:设有下面的数组B(10) As Integer 则下面的语句都是正确的 A(1)=A(2)+B(1)+5取数组元素运算 A(1)=B( 下标使用变量 B(i+1)=A(i+2) 下标使用表达式
5.2.2 一维数组元素的引用 使用形式: 数组名(下标) 其中:下标可以是整型变量、常量或表达式。 例如: 设有下面的数组B(10) As Integer 则下面的语句都是正确的。 A(1)=A(2)+B(1)+5 ' 取数组元素运算 A(i)=B(i) ' 下标使用变量 B(i+1)=A(i+2) ' 下标使用表达式
5.2.3一维数组的基本操作 1.可通过循环给数组元素的初值 For1 1①o10 A数组的每个元素值为1 A(i)=1 Next i 2.数组的输入 For i= 1 To 4 Forj=1 To 5 sc(i,j)= InputBox("'输入sc("&i&","&j&")的值") Next Next I
5.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(" &i & "," & j & ") 的值") Next j Next I
3.数组的输出 输出如下图所示的下三角数据 im Sc(5, 5)As s Integer, i%o,J%0 For i=1 To 5 Forj= 1 To i sc(i,j)=i*5+j Print sc(i、N8 For■1 Next j Print’换行 1112 Next I 161718 21222324 62728293
3. 数组的输出 输出如下图所示的下三角数据 Dim sc(5,5) As Integer,i%,j% For i = 1 To 5 For j = 1 To i sc(i, j) = i * 5 + j Print sc(i, j); " "; Next j Print ' 换行 Next I
4.求数组中最大元素及所在下标 Dim Max As Integer, iMax As Integer Max=A(1): iMax=l For i=2 To 10 If A(i)>Max Then Max=A(i) iMax=i End if Next I 交换前 5.将数组元素倒置[24618101315179 For i=1 To 10 2 交换后: t=A(i 975|3|11086|42 A()=A(10-i+1) 图1-3-22数组中个元素交换 A(10-i+1)=t Next I 例5.1
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 End If Next I 5. 将数组元素倒置 For i =1 To 10\2 t=A(i) A(i)=A(10-i+1) A(10-i+1)=t Next I 例5.1
524一维数组的应用 一、分类统计 例52 在例51中如果还要统计09,10~19,20~20,…80~89 90~99分数段及100分的学生人 则可另用数组bn来存各分数段的人数,并用bn(0)存 0-9分的人数,bn(1)存10-19分的人数,…bn()存9099分 的人数,bn(10)存100分的人数
5.2.4 一维数组的应用 一、分类统计 例5.2 在例5.1中如果还要统计0~9,10~19,20~20,….80~89, 90~99分数段及100分的学生人。 则可另用数组bn来存各分数段的人数,并用bn(0)存 0~9分的人数,bn(1)存10~19分的人数,…bn(9)存90~99分 的人数,bn(10)存100分的人数