第7章 数组s
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Private Sub Form_Click() Dim S, P, T, B, I, a(9) As Integer Randomize
一维数组的使用( 7.1.4 一维数组的使用(2)
'随机产生 个两位数的随机整数赋给 数组 随机产生20个两位数的随机整数赋给 随机产生 个两位数的随机整数赋给a数组 For I = 0 To 9 a(I) = Int(Rnd * 90 + 10) Print a(I); Next I Print S = 0 For I = 0 To 9 S = S + a(I) '求累加和 求累加和 Next I P = S / 10 '求平均值 求平均值 Print "各元素累加和 各元素累加和="; S, "平均值 平均值="; P 各元素累加和 平均值 Print "比平均值小的各元素的值依次为 比平均值小的各元素的值依次为:"; 比平均值小的各元素的值依次为
求一个班40名学生的平均成绩, 40名学生的平均成绩 【 例 7. 1 】 求一个班 40 名学生的平均成绩 , 然后统计高于平 均分的人数。 均分的人数。 若用简单变量结合For...Next 语句 若用简单变量结合 For...Next语句 , 求平均成绩的程序段 For...Next 语句, 如下: 如下:
一维数组的使用( 7.1.4 一维数组的使用(3)
For I = 1 To 9 If a(I) < P Then Print a(I); Next I Print '求数组中的最大值及其元素下标并打印 求数组中的最大值及其元素下标并打印 T = a(0): B = 0 For I = 1 To 9 If T > a(I) Then T = a(I): B = I Next I Print "最小值为 最小值为:"; T, "其元素下标为 其元素下标为:"; B 最小值为 其元素下标为 End Sub
返回本节 返回首页
一维数组的概念( 7.1.2 一维数组的概念(1)
在上例中,使用的S(i)是一个数组, S(i)是一个数组 在上例中,使用的S(i)是一个数组,因为只有 一个下标,所以又称一维数组。 一个下标,所以又称一维数组。一维数组就是只有 一个下标的数组。实际上, 一个下标的数组。实际上,数组就是一组具有相同 名字、不同下标的变量的集合。 名字、不同下标的变量的集合。需要注意数组并不 是一种数据类型, 是一种数据类型,它是用来存放或表示一组相关的 数据。 数据。 VB中的数组有一维数组 二维数组、 , 中的数组有一维数组、 VB中的数组有一维数组、二维数组、…,最多 60维 二维及二维以上的数组也称多维数组。 60维;二维及二维以上的数组也称多维数组。按声 明时数组的大小确定与否分为静态(定长) 明时数组的大小确定与否分为静态(定长)数组和 动态(可调)数组两类。 动态(可调)数组两类。
一维数组的概念( 7.1.2 一维数组的概念(2)
数组必须先声明后使用,主要声明数组名、 数组必须先声明后使用,主要声明数组名、类 维数、数组大小。 型、维数、数组大小。按声明时下标的个数确定数 组的维数。 中的语句: 组的维数。例7.1中的语句: Dim S(1 To 40) As Integer 声明了一个一维定长数组, 该数组的名字为C 声明了一个一维定长数组 , 该数组的名字为 C 类型为整型; 共有40 个元素, 下标范围为1 40; 40个元素 , 类型为整型 ; 共有 40 个元素 , 下标范围为 1 到 40 ; 数组的各元素是S( ),S(2),S(3),…,S(40) S(1 ,S(40 S 数组的各元素是 S(1),S(2),S(3), ,S(40);S(i) 表示由下标i值决定是哪一个元素。 表示由下标i值决定是哪一个元素。
第7章 数 组 章
7.1 7.2 7.3 7.4 7.5 7.6 7.7 一维数组 多维数组 动态数组 控件数组 数组的特殊操作 本章小结 上机实训
结束
7.1 一维数组
7.1.1 引例 7.1.2 一维数组的概念 7.1.3 一维数组的声明和引用 7.1.4 一维数组的使用
返回首页
7.1.1 引例 (1)
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(4)
2. 一维数组的引用
在对数组操作时,引用一维数组元素的形式是: 在对数组操作时,引用一维数组元素的形式是: 数组名(下标) 数组名(下标) 注意:下标不能超出数组声明时的上、下界范围。 注意 :下标不能超出数组声明时的上、下界范围。 下标 可以是整型的常数、变量、表达式, 可以是整型的常数、变量、 表达式, 甚至又是一个数组元 素。 都是正确的引用形式。 如C(8)、C(3+13)、C(i) 都是正确的引用形式。 C(8 C(3 13) 一维数组元素的使用规则与同类型的简单变量相同。 一维数组元素的使用规则与同类型的简单变量相同。 在通常情况下,数组中的各元素类型必须相同, 在通常情况下, 数组中的各元素类型必须相同,但若数 组类型为Variant 变体) Variant( 可存放不同类型的数据, 组类型为 Variant( 变体 ) 时 , 可存放不同类型的数据 , 但各元素的基本类型仍为变体型。 但各元素的基本类型仍为变体型。 返回本节 返回首页
图7.2 例7.3运行结果 运行结果
返回本节 返回首页
7.2 多维数组
7.2.1 多维数组的声明 7.2.2 多维数组的使用
返回首页
7.2.1 多维数组的声明 (1)
多维数组声明形式如下: 多维数组声明形式如下: Dim 数组名 下标 下标 数组名(下标 下标2[,下标 …])[As 类型 下标1,下标 下标3 类型] 下标 其中,下标有两个以上的数字, 其中,下标有两个以上的数字,它决定了数组的维数为多 维。 每一维的大小为:上界—下界 下界+ 每一维的大小为:上界 下界+1;数组的大小为各维大小 的乘积。 的乘积。 例如: 例如: Dim K(0 To 2, 0 To 3) As Long 或 Dim K(2, 3) As Long 都是声明了长整型的二维数组K,第一维下标范围为0~2; 都是声明了长整型的二维数组 , 第一维下标范围为 ; 第二维下标范围为0~3,占据 ×4个长整型变量的存储空间。 个长整型变量的存储空间。 第二维下标范围为 ,占据3× 个长整型变量的存储空间
返回本节 返回首页
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(1)
1. 一维数组的声明
声明一维数组的格式如下: 声明一维数组的格式如下: Dim 数组名 下标 [As 类型 数组名(下标 下标) 类型] 其中: 其中: 下标:必须为常数,不可以为表达式或变量。下标的形式 下标:必须为常数,不可以为表达式或变量。 上界, 为 : [ 下界 To ] 上界 , 下标的上下界不得超过长整型数据 类型的范围,且受内存大小限制。若省略下界, 类型的范围,且受内存大小限制。若省略下界,其默认值为 一维数组的元素(分量)个数为:上界—下界 下界+ 0。一维数组的元素(分量)个数为:上界 下界+1。 类型:指定数组的数据类型( As 类型 :指定数组的数据类型(数组中各元素的数据类 如果省略,即不明确给出数组的类型, 型)。如果省略,即不明确给出数组的类型,则数组与以前 所述简单变量的声明一样,默认为变体型数组。 所述简单变量的声明一样,默认为变体型数组。
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(2)
Dim语句声明数组 语句声明数组, 用 Dim 语句声明数组 , 实际上就是为系统提供 数组名、数组类型、 数组名、数组类型、数组的维数和各维大小等相关 信息。 信息。 例如: 例如: Dim W(100) As Integer
声明了W为数组名,整型,一维数组, 101个 声明了W为数组名,整型,一维数组,有101个 元素;下标的范围0 100。若在程序中使用W(101) W(101 元素;下标的范围0~100。若在程序中使用W(101) 则系统会显示错误信息“下标越界” ,则系统会显示错误信息“下标越界”。
7.1.1 引例 (2)
可用数组解决求40人的平均分和高于平均分人数的问题, 可用数组解决求40人的平均分和高于平均分人数的问题, 40人的平均分和高于平均分人数的问题 完整程序编写如下: 完整程序编写如下:
Private Sub Command1_Click() Dim S(1 To 40) As Integer Dim P!, N%, i% P = 0 For i=1 To 40 S(i)= InputBox("请输入第 请输入第" & i & "位学生的成绩:") 位学生的成绩: 请输入第 位学生的成绩 P = P + S(i) Next I P = P / 40 N = 0 For i=1 To 40 If S(i) > P Then N = N + 1 Next i Print "平均分 平均分="; P, "高于平均分的人数 高于平均分的人数="; N 平均分 高于平均分的人数 End Sub
程序运行时单击窗体, 程序运行时单击窗体,显示 如图7.1所示的界面 所示的界面。 如图 所示的界面。
一维数组的使用( 7.1.4 一维数组的使用(4)
设某数组中有10 个数, 10个数 【 例 7 . 3 】 设某数组中有 10 个数 , 用选择法按递 增顺序排序。 增顺序排序。 算法分析: 算法分析:选择法排序是最为简单且易理解的算 假定有n个数的序列,要求按递增的次序排序, 法。假定有n个数的序列,要求按递增的次序排序, 算法步骤是: 算法步骤是: 通过循环从n 个数中选出最小数的下标, ( 1 ) 通过循环从 n 个数中选出最小数的下标 , 出 循环后最小数与第1个数交换位置。 循环后最小数与第1个数交换位置。 除第1 个数外, 其余n 个数再按步骤( ( 2 ) 除第 1 个数外 , 其余 n-1 个数再按步骤 ( 1 ) 的方法选出次小的数,与第2个数交换位置。 的方法选出次小的数,与第2个数交换位置。 重复步骤( 最后构成递增序列。 (3)重复步骤(1)n-1遍,最后构成递增序列。
P = 0 For I = 1 to 40 S = InputBox("请输入第 & I & "位学生的成绩:") 请输入第" 位学生的成绩: 请输入第 位学生的成绩 P = P + S Next I P = P / 40
但是,若要Leabharlann Baidu计高于平均分的人数,则无法实现。 但是,若要统计高于平均分的人数,则无法实现。
一维数组的使用( 7.1.4 一维数组的使用(1)
编写程序时,一维数组通常与For循环结合使用, For循环结合使用 编写程序时 , 一维数组通常与 For 循环结合使用 , For语句中的循环变量作为数组元素的下标 语句中的循环变量作为数组元素的下标, For语句中的循环变量作为数组元素的下标,通过 循环变量的不断改变, 循环变量的不断改变 , 达到对每个数组元素依次 进行处理的目的。 进行处理的目的。 随机产生10 个两位数的随机整数, 10个两位数的随机整数 【 例 7 . 2 】 随机产生 10 个两位数的随机整数 , 赋 给a数组,然后求各元素之和、平均值,将比平均 数组, 然后求各元素之和、 平均值, 值小的各元素的值打印出来, 值小的各元素的值打印出来 , 最后找出数组中的 最小值及其元素下标并打印。 最小值及其元素下标并打印。 编写代码如下: 编写代码如下:
一维数组的使用( 7.1.4 一维数组的使用(5)
设计方法:在窗体上添加一个命令按钮,设 Caption为“ 选择法排序 ” , 用来触发排序过程 。 为 选择法排序” 用来触发排序过程。 为简化操作,数组中的10个数据为 个数据为0~ 的整数 的整数, 为简化操作,数组中的 个数据为 ~99的整数, 用随机函数来产生。运行结果如图7 用随机函数来产生。运行结果如图7.2,代码详见 教材。 另外, 数组排序还可使用冒泡法、 教材 。 另外 , 数组排序还可使用冒泡法 、 插入法 等方法。 等方法。
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(3)
又如: 又如: Dim T(-5 To 8) As String * 6
声明了T为数组名,字符串类型,一维数组, 声明了T为数组名,字符串类型,一维数组, 14个元素 下标的范围个元素; 有14个元素;下标的范围-5~8,每个元素最多存 个字符。 放6个字符。 注意,以下数组声明是错误的: 注意,以下数组声明是错误的: M = 50 Dim X(M) As Single 因为数组声明中的下标不能是变量, 因为数组声明中的下标不能是变量 , 只能是 常量。 常量。
一维数组的使用( 7.1.4 一维数组的使用(2)
'随机产生 个两位数的随机整数赋给 数组 随机产生20个两位数的随机整数赋给 随机产生 个两位数的随机整数赋给a数组 For I = 0 To 9 a(I) = Int(Rnd * 90 + 10) Print a(I); Next I Print S = 0 For I = 0 To 9 S = S + a(I) '求累加和 求累加和 Next I P = S / 10 '求平均值 求平均值 Print "各元素累加和 各元素累加和="; S, "平均值 平均值="; P 各元素累加和 平均值 Print "比平均值小的各元素的值依次为 比平均值小的各元素的值依次为:"; 比平均值小的各元素的值依次为
求一个班40名学生的平均成绩, 40名学生的平均成绩 【 例 7. 1 】 求一个班 40 名学生的平均成绩 , 然后统计高于平 均分的人数。 均分的人数。 若用简单变量结合For...Next 语句 若用简单变量结合 For...Next语句 , 求平均成绩的程序段 For...Next 语句, 如下: 如下:
一维数组的使用( 7.1.4 一维数组的使用(3)
For I = 1 To 9 If a(I) < P Then Print a(I); Next I Print '求数组中的最大值及其元素下标并打印 求数组中的最大值及其元素下标并打印 T = a(0): B = 0 For I = 1 To 9 If T > a(I) Then T = a(I): B = I Next I Print "最小值为 最小值为:"; T, "其元素下标为 其元素下标为:"; B 最小值为 其元素下标为 End Sub
返回本节 返回首页
一维数组的概念( 7.1.2 一维数组的概念(1)
在上例中,使用的S(i)是一个数组, S(i)是一个数组 在上例中,使用的S(i)是一个数组,因为只有 一个下标,所以又称一维数组。 一个下标,所以又称一维数组。一维数组就是只有 一个下标的数组。实际上, 一个下标的数组。实际上,数组就是一组具有相同 名字、不同下标的变量的集合。 名字、不同下标的变量的集合。需要注意数组并不 是一种数据类型, 是一种数据类型,它是用来存放或表示一组相关的 数据。 数据。 VB中的数组有一维数组 二维数组、 , 中的数组有一维数组、 VB中的数组有一维数组、二维数组、…,最多 60维 二维及二维以上的数组也称多维数组。 60维;二维及二维以上的数组也称多维数组。按声 明时数组的大小确定与否分为静态(定长) 明时数组的大小确定与否分为静态(定长)数组和 动态(可调)数组两类。 动态(可调)数组两类。
一维数组的概念( 7.1.2 一维数组的概念(2)
数组必须先声明后使用,主要声明数组名、 数组必须先声明后使用,主要声明数组名、类 维数、数组大小。 型、维数、数组大小。按声明时下标的个数确定数 组的维数。 中的语句: 组的维数。例7.1中的语句: Dim S(1 To 40) As Integer 声明了一个一维定长数组, 该数组的名字为C 声明了一个一维定长数组 , 该数组的名字为 C 类型为整型; 共有40 个元素, 下标范围为1 40; 40个元素 , 类型为整型 ; 共有 40 个元素 , 下标范围为 1 到 40 ; 数组的各元素是S( ),S(2),S(3),…,S(40) S(1 ,S(40 S 数组的各元素是 S(1),S(2),S(3), ,S(40);S(i) 表示由下标i值决定是哪一个元素。 表示由下标i值决定是哪一个元素。
第7章 数 组 章
7.1 7.2 7.3 7.4 7.5 7.6 7.7 一维数组 多维数组 动态数组 控件数组 数组的特殊操作 本章小结 上机实训
结束
7.1 一维数组
7.1.1 引例 7.1.2 一维数组的概念 7.1.3 一维数组的声明和引用 7.1.4 一维数组的使用
返回首页
7.1.1 引例 (1)
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(4)
2. 一维数组的引用
在对数组操作时,引用一维数组元素的形式是: 在对数组操作时,引用一维数组元素的形式是: 数组名(下标) 数组名(下标) 注意:下标不能超出数组声明时的上、下界范围。 注意 :下标不能超出数组声明时的上、下界范围。 下标 可以是整型的常数、变量、表达式, 可以是整型的常数、变量、 表达式, 甚至又是一个数组元 素。 都是正确的引用形式。 如C(8)、C(3+13)、C(i) 都是正确的引用形式。 C(8 C(3 13) 一维数组元素的使用规则与同类型的简单变量相同。 一维数组元素的使用规则与同类型的简单变量相同。 在通常情况下,数组中的各元素类型必须相同, 在通常情况下, 数组中的各元素类型必须相同,但若数 组类型为Variant 变体) Variant( 可存放不同类型的数据, 组类型为 Variant( 变体 ) 时 , 可存放不同类型的数据 , 但各元素的基本类型仍为变体型。 但各元素的基本类型仍为变体型。 返回本节 返回首页
图7.2 例7.3运行结果 运行结果
返回本节 返回首页
7.2 多维数组
7.2.1 多维数组的声明 7.2.2 多维数组的使用
返回首页
7.2.1 多维数组的声明 (1)
多维数组声明形式如下: 多维数组声明形式如下: Dim 数组名 下标 下标 数组名(下标 下标2[,下标 …])[As 类型 下标1,下标 下标3 类型] 下标 其中,下标有两个以上的数字, 其中,下标有两个以上的数字,它决定了数组的维数为多 维。 每一维的大小为:上界—下界 下界+ 每一维的大小为:上界 下界+1;数组的大小为各维大小 的乘积。 的乘积。 例如: 例如: Dim K(0 To 2, 0 To 3) As Long 或 Dim K(2, 3) As Long 都是声明了长整型的二维数组K,第一维下标范围为0~2; 都是声明了长整型的二维数组 , 第一维下标范围为 ; 第二维下标范围为0~3,占据 ×4个长整型变量的存储空间。 个长整型变量的存储空间。 第二维下标范围为 ,占据3× 个长整型变量的存储空间
返回本节 返回首页
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(1)
1. 一维数组的声明
声明一维数组的格式如下: 声明一维数组的格式如下: Dim 数组名 下标 [As 类型 数组名(下标 下标) 类型] 其中: 其中: 下标:必须为常数,不可以为表达式或变量。下标的形式 下标:必须为常数,不可以为表达式或变量。 上界, 为 : [ 下界 To ] 上界 , 下标的上下界不得超过长整型数据 类型的范围,且受内存大小限制。若省略下界, 类型的范围,且受内存大小限制。若省略下界,其默认值为 一维数组的元素(分量)个数为:上界—下界 下界+ 0。一维数组的元素(分量)个数为:上界 下界+1。 类型:指定数组的数据类型( As 类型 :指定数组的数据类型(数组中各元素的数据类 如果省略,即不明确给出数组的类型, 型)。如果省略,即不明确给出数组的类型,则数组与以前 所述简单变量的声明一样,默认为变体型数组。 所述简单变量的声明一样,默认为变体型数组。
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(2)
Dim语句声明数组 语句声明数组, 用 Dim 语句声明数组 , 实际上就是为系统提供 数组名、数组类型、 数组名、数组类型、数组的维数和各维大小等相关 信息。 信息。 例如: 例如: Dim W(100) As Integer
声明了W为数组名,整型,一维数组, 101个 声明了W为数组名,整型,一维数组,有101个 元素;下标的范围0 100。若在程序中使用W(101) W(101 元素;下标的范围0~100。若在程序中使用W(101) 则系统会显示错误信息“下标越界” ,则系统会显示错误信息“下标越界”。
7.1.1 引例 (2)
可用数组解决求40人的平均分和高于平均分人数的问题, 可用数组解决求40人的平均分和高于平均分人数的问题, 40人的平均分和高于平均分人数的问题 完整程序编写如下: 完整程序编写如下:
Private Sub Command1_Click() Dim S(1 To 40) As Integer Dim P!, N%, i% P = 0 For i=1 To 40 S(i)= InputBox("请输入第 请输入第" & i & "位学生的成绩:") 位学生的成绩: 请输入第 位学生的成绩 P = P + S(i) Next I P = P / 40 N = 0 For i=1 To 40 If S(i) > P Then N = N + 1 Next i Print "平均分 平均分="; P, "高于平均分的人数 高于平均分的人数="; N 平均分 高于平均分的人数 End Sub
程序运行时单击窗体, 程序运行时单击窗体,显示 如图7.1所示的界面 所示的界面。 如图 所示的界面。
一维数组的使用( 7.1.4 一维数组的使用(4)
设某数组中有10 个数, 10个数 【 例 7 . 3 】 设某数组中有 10 个数 , 用选择法按递 增顺序排序。 增顺序排序。 算法分析: 算法分析:选择法排序是最为简单且易理解的算 假定有n个数的序列,要求按递增的次序排序, 法。假定有n个数的序列,要求按递增的次序排序, 算法步骤是: 算法步骤是: 通过循环从n 个数中选出最小数的下标, ( 1 ) 通过循环从 n 个数中选出最小数的下标 , 出 循环后最小数与第1个数交换位置。 循环后最小数与第1个数交换位置。 除第1 个数外, 其余n 个数再按步骤( ( 2 ) 除第 1 个数外 , 其余 n-1 个数再按步骤 ( 1 ) 的方法选出次小的数,与第2个数交换位置。 的方法选出次小的数,与第2个数交换位置。 重复步骤( 最后构成递增序列。 (3)重复步骤(1)n-1遍,最后构成递增序列。
P = 0 For I = 1 to 40 S = InputBox("请输入第 & I & "位学生的成绩:") 请输入第" 位学生的成绩: 请输入第 位学生的成绩 P = P + S Next I P = P / 40
但是,若要Leabharlann Baidu计高于平均分的人数,则无法实现。 但是,若要统计高于平均分的人数,则无法实现。
一维数组的使用( 7.1.4 一维数组的使用(1)
编写程序时,一维数组通常与For循环结合使用, For循环结合使用 编写程序时 , 一维数组通常与 For 循环结合使用 , For语句中的循环变量作为数组元素的下标 语句中的循环变量作为数组元素的下标, For语句中的循环变量作为数组元素的下标,通过 循环变量的不断改变, 循环变量的不断改变 , 达到对每个数组元素依次 进行处理的目的。 进行处理的目的。 随机产生10 个两位数的随机整数, 10个两位数的随机整数 【 例 7 . 2 】 随机产生 10 个两位数的随机整数 , 赋 给a数组,然后求各元素之和、平均值,将比平均 数组, 然后求各元素之和、 平均值, 值小的各元素的值打印出来, 值小的各元素的值打印出来 , 最后找出数组中的 最小值及其元素下标并打印。 最小值及其元素下标并打印。 编写代码如下: 编写代码如下:
一维数组的使用( 7.1.4 一维数组的使用(5)
设计方法:在窗体上添加一个命令按钮,设 Caption为“ 选择法排序 ” , 用来触发排序过程 。 为 选择法排序” 用来触发排序过程。 为简化操作,数组中的10个数据为 个数据为0~ 的整数 的整数, 为简化操作,数组中的 个数据为 ~99的整数, 用随机函数来产生。运行结果如图7 用随机函数来产生。运行结果如图7.2,代码详见 教材。 另外, 数组排序还可使用冒泡法、 教材 。 另外 , 数组排序还可使用冒泡法 、 插入法 等方法。 等方法。
一维数组的声明和引用( 7.1.3 一维数组的声明和引用(3)
又如: 又如: Dim T(-5 To 8) As String * 6
声明了T为数组名,字符串类型,一维数组, 声明了T为数组名,字符串类型,一维数组, 14个元素 下标的范围个元素; 有14个元素;下标的范围-5~8,每个元素最多存 个字符。 放6个字符。 注意,以下数组声明是错误的: 注意,以下数组声明是错误的: M = 50 Dim X(M) As Single 因为数组声明中的下标不能是变量, 因为数组声明中的下标不能是变量 , 只能是 常量。 常量。