您现在的位置:首页 >> 网络教学 >> 数组 >> 内容

数组

时间:2009-6-19 8:37:29 点击:2696

数组的概念

一、 数组与数组元素

㈠ 引例

[5-1]编程求出100个学生的考试总成绩、平均成绩、高于平均的人数及低于平均的人数。

要对100个学生的成绩完成四种处理操作,为便于处理通常要把100个成绩用变量保存起来,如果用一般变量来表示成绩,则需要用100个变量,如:mark1mark2、…、mark100。如此众多的变量对程序书写和数据处理极为不便,为此我们可以借鉴数学符号xi这种用单一名称表示多个求知数的形式来表示这100个变量。这种类似于数学符号xi的变量表示形式,在计算机程序设计中称为数组。

㈡ 基本概念

数组是具有一定顺序关系的若干相同类型变量的命名集合体。组成数组的变量称为该数组的元素,数组中数组元素的个数称之为数组长度(或数组大小)。数组可以只用一个数组名代表逻辑上相关的一批数据,为程序处理数据、简化程序书写带来好处。

[5-1]中,100个学生的成绩可用一个包含100个元素名为mark的数组来表示。

再如,一个班有30名学生,可以用一个数组A来表示30个学生的学号,A(1)代表序号为1的学生,A(2)代表序号为2的学生,…,A(30)代表序号为30的学生。

一般情况下,数组各元素的数据类型相同,可以是前面讲过的各种基本数据类型。若数组类型被指定为变体型,它的各个元素就可以是不同的类型。

二、 数组下标和维数

类似于数学符号xi(i=12,…,n),数组中每个数组元素也有一个用于区分这些元素的编号,称为下标。如mark(1)mark(2)、…、mark(100)A(1)A(2)、…、A(30)数组下标表示了元素在数组中的排列位置,引用数组元素时下标可以是整型的常数、变量、表达式,甚至是一个变量。

数学上不仅有数学符号xi(i=1,2,,n),还有形如xij(i=12,…,nj=12,…,m)的数学符号。计算机程序中也有形如a(32)的数组,称为二维数组;前述的markA则称为一维数组。此外,还有三维数组、四维数组,VB支持最多60维数组。所谓“维”是一个方向,可以在此方向上改变数组元素的规范。

5-1到图5-3演示了一到三维数组的概念性结构。图中的每个元素都显示访问该元素的下标值。例如,指定下标 (1, 0) 可以访问二维数组第二行的第一个元素。

5-1 一维数组的概念性结构

5-2 二维数组的概念性结构

5-3 三维数组的概念性结构

很多数组只有一维,如处在各个年龄的人数、全班各同学同一门课程的成绩等,这类数组只使用一个下标。某些数组有两个维,如校园内每座建筑物内每一楼层的办公室数量。元素的规范需要建筑物编号和楼层,并且每个元素都根据建筑物和楼层的组合来保存办公室的数量。因此,这类数组使用两个下标。具有三个下标的三维数组,可以表示三维空间中的值。尽管VB支持多达60维数组,但多于三维的情况并不多见。

三、 数组的声明

和简单变量一样,数组也必须先声明后使用,声明数组即是说明数组名、类型、维数和数组大小。其声明格式为:

Dim 数组名([[下标1下界TO]下标1上界,[下标2下界TO]下标2上界,…])[As类型名]

说明:

1)数组名的命名与简单变量相同,可以是任意合法的变量名。

2)所谓下界和上界,就是数组下标的最小值和最大值。缺省下界时,VB默认为0

3)下标个数决定数组的维数,最多60维。每一维的大小=上界-下界+1;数组的大小=每一维大小的乘积。

4)下标必须为常数,不可以为表达式或变量。下标下界最小为-32768,上界最大为32767

5)如果省略[As类型名],则为变体型。

[5-2] 一维数组的声明:

1dim a10 as integer

2dim b-3 to 5 as string*3

3n=10

Dim x(n) As Single

声明(1)省略了下界,声明数组a、整型、有11个元素,下标的范围是010。声明(2)声明数组b、字符串型、有9个元素,下标的范围是-35,每个元素最多存放3个字符。声明(3)是错误的声明,因为使用了变量n来说明上界。

[5-3] dim c-1 to 1 4 as long

c是数组名、长整型、二维数组、第一维下标范围为-11,第二维下标的范围是04,数组大小是3×5。该数组各元素的排列如图5-4

c(-1,0)

c(-1,1)

c(-1,2)

c(-1,3)

c(-1,4)

c(0,0)

c(0,1)

c(0,2)

c(0,3)

c(0,4)

c(1,0)

c(1,1)

c(1,2)

c(1,3)

c(1,4)

5-4 数组元素的排列

注意事项:

1)在有些语言中,下界一般从1开始,为了便于使用,可在VB的窗体层或标准模块层用语句option base n来重新设定数组的默认下界,如option base 1

2) 在数组声明中的下标关系到每一维的大小,是数组说明符,而在程序其他地方出现的下标为数组元素,两者写法相同,但意义不同。

3) 在数组声明时的下标只能是常量,而引用变量时数组元素的下标可以是变量或表达式。

4)可以用LBound函数与 UBound 函数来确定一个数组某一维的下界和上界。如[5-2]LBoundb=-3UBoundb=5

四、 数组的应用

㈠ 数组的初始化

所谓数组的初始化,就是给数组中的各元素赋初值。VB中没有提供定义数组并同时初始化其内容的方法,所以大多数情况下,必须单独地设置每一个元素。一般使用循环实现对数组的初始化。

[5-4]一维数组的初始化。定义两个整型数组AB并初始化为0

程序如下:

Dim i As Integer, A(100) As Integer, B(100) As Integer

For i = 0 To 100

    A(i) = 0

Next i

B = A程序中语句“B=A”的作用是把数组A中各元素的值赋给B中对应的元素,该语句等价于:

For i = 0 To 100

    B(i) = A(i)

Next i

[5-5]二维数组的初始化。定义二维字符串数组strName_Sex并初始化。

与简单变量相同,字符串型变量通常赋初值为空字串。对于二维数组的初始化通常用两重循环来完成。程序如下:

Dim i As Integer, j As Integer strName_Sex(491) As String

For i = 0 To 49

   For j = 0 To 1

       strName_Sex (i, j) = ""

   Next j

Next i

㈡ 求数组中最大元素及所在下标

[5-6]由用户输入10个任意整数,求出这10个数中的最大值及其所数组中的位置。

程序如下:

Private Sub Form_Click()

    Dim Max As Integer, iMax As Integer

    Dim iUserData(1 To 10) As Integer, i As Integer

    For i = 1 To 10

        iUserData(i) = Val(InputBox("请输入一个整数:"))

    Next i

       

    Max = iUserData(1): iMax = 1

    For i = 2 To 10

        If iUserData(i) > Max Then

            Max = iUserData(i)

            iMax = i

        End If

    Next i

   

    Print "最大值是:" & Max; "其下标为:" & iMax

End Sub

程序运行结果如图5-4所示。

5-4 求数组中最大元素及所在下标

作者:Admin  
  • 上一篇:没有了
  • 下一篇:静态数组
  • 本类热门
    本类推荐
    本类固顶
    • 没有
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4