考点14 数组的声明与使用《Visual Basic程序设计》内蒙古(对口招生)计算机类 知识点讲解

2026-10-12
| 11页
| 3人阅读
| 0人下载
精品

内容正文:

内蒙古自治区(计算机类)对口招生 《Visual Basic程序设计》复习讲义 模块 7 数组 考点 14 数组的声明与使用 【考纲要求】 1. 掌握数组基础知识; 2. 掌握静态数组; 3. 理解动态数组; 4. 理解控件数组。 【知识网络】 【知识和技能要点】 一、数组基础知识 1. 数组的概念与下标 数组是有序数据的集合,数组中每个元素都具有唯一的索引号。一组具有相同名称、不同下标的数据称为数组,表示为A(n)。A为数组名,n为下标,不同的下标表示不同的数据。A(1)表示数组A的第一个元素,A(n)表示数组A的第n个元素。 数组的维数有数组元素中下标个数决定,一个下标表示一维数组,两个下标表示二维数组,最多60维数组。下标表示唯一的顺序号,且不能超过数组声明的上下界范围。除非特殊说明,一般情况下数组从0开始计数。 2. 数组的声明与元素个数 声明数组可以写成"Dim 数组名(下标1,[下标2…]) [As 类型]",也可以把下标写成"下界 To 上界"的形式。计算元素个数时,每个维数的大小等于上界减去下界再加 1,数组的大小则是各维数大小的乘积。例如 Dim a(10) 声明的数组共有 11 个元素;Dim A(-3 To 5) 声明的数组元素个数是 5 减负 3 再加 1,也就是 9 个。 3. Option Base 语句 在不写"下界 To 上界"的情况下,数组下标默认从 0 开始计数,因此 Dim m(10) 的下标范围是 0 到 10。如果在窗体的声明部分写上 Option Base 1,下标的下界就改为 1,这时 Dim m(10) 的下标范围变成 1 到 10,下界是 1。这条语句必须写在所有过程之前,才能对过程中声明的数组起作用。 二、静态数组 1. 一维静态数组的输入与输出 一维数组通常用一层循环来处理,循环变量同时充当数组的下标:要给各个元素输入数据,就在循环体中把取到的值赋给当前下标的元素;要输出全部元素,就在循环体中把当前元素打印出来。循环的初值与终值应当与数组下标的下界和上界一致;若声明时用了 Option Base 1,循环变量就要从 1 开始,否则会漏掉最后一个元素或者访问到并不存在的元素。 2. 二维静态数组的定义与元素个数 二维静态数组的定义方法与一维相似,只要在括号中分别标识出每一维下标的界线即可,两个下标之间用逗号隔开,前一个表示行、后一个表示列。例如要存放 3 行 4 列的数据,可以声明为 Dim x(1 To 3, 1 To 4);若下界按默认的 0 计算,写 Dim x(3,4) 就一共有 4 行 5 列,元素个数也随之变为 20。 3. 二维静态数组的输入与输出 二维数组的元素按照逐行扫描的方式处理,因此要用两层循环:外层循环处理行,内层循环处理列。输入时在内层循环中给当前元素赋值,把行号与列号一起作为下标;输出时也在内层循环中逐个打印当前元素。需要注意的是,输出时应当在每一行打印完毕之后单独执行一次不带参数的 Print 换行,屏幕上才会呈现出行列分明的矩阵形状。 三、动态数组 1. 动态数组的创建与声明 使用静态数组必须预先知道数据量的大小,而动态数组可以在程序运行时才确定数组的大小。创建的方法是:先用 Dim、Private 或 Public 语句声明一个括号内为空的数组,再在过程中用 ReDim 语句指明它的大小。ReDim 中的下标既可以是常量,也可以是具有确定值的变量,因此可以把输入的数据个数作为下标传进去;程序中还可以多次使用 ReDim 改变数组的大小与维数。 2. ReDim Preserve 与数据的保留 每次执行 ReDim 语句重新分配数组时,原来数组中的内容都会丢失,各元素的值被重新初始化:数值型元素被置为 0,字符型元素被置为空串,布尔型元素被置为 False。如果要保留原有的数据,可以在 ReDim 后面加上参数 Preserve,系统会把原有元素复制到新数组中去。不过这时只能改变最后一维的大小,前面几维的大小不能改动;重新定义后扩充的部分用该类型的默认值填充。 3. Array 函数、UBound 与 LBound 函数 Array 函数可以一次性地给动态数组赋一组值,例如把 1、2、3、4、5 直接写进函数之中。使用它时要注意,接受返回值的变量必须声明为变体型。UBound 函数的作用是提取数组的最大下标,LBound 函数的作用是提取最小下标,两者都写成"函数名(数组名)"的形式。用它们作为循环的终值与初值,就不必考虑下标的下界究竟是从 0 还是从 1 开始。 四、控件数组 1. 控件数组的概念与下标 当若干控件需要执行大致相同的操作时,可以把它们定义成控件数组。它由一组类型相同的控件构成,这些控件共用一个名称,也共享同一个事件过程,因此只需编写一次代码就能让所有成员都起作用。数组中的每个元素都有唯一与之关联的下标,靠下标来区分,例如 Command1(0) 与 Command1(1)。下标由系统内定,Option Base 语句对它没有作用,一律从 0 开始计数。 2. 控件数组的创建与使用 创建控件数组有两条途径。一是直接创建:先在窗体上画出一个初始控件,然后复制、粘贴,在弹出的对话框中选"是",系统就生成了控件数组。二是修改控件名称:先把需要的控件全部画好,选其中一个作母体,再把其余控件的名称改成与母体相同,系统询问时选"是"即可。使用控件数组时要用到控件的 Index 属性,它标识的正是该控件在数组中的下标。 【真题】 2023年真题|第9题 用下面语句定义的数组的元素个数是( ) Dim A(-3 To 5) As Integer A. 3 B. 5 C. 8 D. 9 【答案】D 【解析】该语句是"下界 To 上界"形式的数组声明,数组 A 的下界是 -3、上界是 5。计算元素个数时用上界减去下界再加 1,即 5 - (-3) + 1 = 9,因此数组共有 9 个元素。若误用上界减下界,就会得到 8 个的错误结果。 2023年真题|第20题 定义数组 a(2,3) 中包含的数组元素个数是( ) A. 2 B. 3 C. 6 D. 12 【答案】D 【解析】数组 a(2,3) 是二维数组,括号中的两个数分别是两维下标的上界。下界按默认值 0 计算,第一维的下标有 0、1、2 共 3 个,第二维的下标有 0、1、2、3 共 4 个,因此元素总数为 3 × 4 = 12。二维数组的元素个数等于各维数大小的乘积。 2023年真题|填空第123题 在定义数组 m(10) 时使用了下列语句,则数组的下界是________。 Option Base 1 【答案】1 【解析】在不写"下界 To 上界"时,数组下标默认从 0 开始;而 Option Base 1 语句把默认的下界改为 1,因此数组 m(10) 的下标范围是 1 到 10,下界是 1。这一点与默认情形很不一样:默认时 m(10) 的下标是 0 到 10,共有 11 个元素,而下界改为 1 之后只有 10 个元素。 2026年真题|第131题 在窗体上有一个文本框 Text1 和一个命令按钮 Command1,用户在文本框中输入一个国家名字后单击命令按钮,判断用户输入的国家是否为联合国常任理事国并输出到窗体上。请将下面程序代码补充完善。 Dim cn(5) As String Private Sub Form_Load() cn(1) = "中国" cn(2) = "美国" cn(3) = "俄罗斯" cn(4) = "英国" cn(5) = "法国" End Sub Private Sub Command1_Click() f = 0 For i = 1 To 5 If StrComp(Text1.Text, cn(i)) = 0 Then f = 1 [24]________ For End If Next i If f = [25]________ Then Print Text1.Text + "是联合国常任理事国" Else Print Text1.Text + "不是联合国常任理事国" End If End Sub 【答案】[24] Exit;[25] 1 【解析】程序把五个常任理事国的名称存放在字符型数组 cn 中,循环逐个与用户输入的内容比较。StrComp 函数在两者相同时返回 0,说明已经找到,此时没有必要再继续比较,应当提前结束循环,故 [24] 处填 Exit,与后面的 For 组成 Exit For 语句。标志变量 f 在找到时被置为 1,所以判断时应当与 1 比较,故 [25] 处填 1;若循环结束后 f 仍为 0,说明没有找到,程序会输出"不是联合国常任理事国"。 【练习题】 一、填空题 1. 数组声明中的下标用于说明数组的________;在其他位置出现的下标则用于表示数组中的________。 【答案】整体(大小);一个元素 【解析】数组声明中的下标用来指明各维下标的界线,也就是数组的整体大小,它决定了这个数组能存放多少个元素。而在程序的其他语句中出现的下标只指向数组中的一个具体元素,两者的写法形式相同,含义却完全不同。 2. 用 Dim A(-3 To 5) As Integer 声明的数组共有________个元素。 【答案】9 【解析】这是"下界 To 上界"形式的声明,下界为 -3、上界为 5。计算元素个数的公式是上界减去下界再加 1,代入得 5 - (-3) + 1 = 9。若只看上界 5 就答 5 个,或者用上界减下界答 8 个,都是常见的错误。 3. 数组 a(2,3) 中共有________个元素。 【答案】12 【解析】这是二维数组,下界按默认值 0 计算:第一维下标为 0、1、2,共 3 个;第二维下标为 0、1、2、3,共 4 个。二维数组的元素个数等于各维数大小的乘积,即 3 × 4 = 12。 4. 使用________语句可以把数组下标的下界设置为 1;该语句应当写在窗体的________部分。 【答案】Option Base 1;声明(通用) 【解析】Option Base 1 语句把不写"下界 To 上界"时数组下标的下界由默认的 0 改为 1。它必须写在窗体的声明部分、所有过程之前,否则不会对过程中声明的数组起作用,系统也不会给出提示。 5. 创建动态数组时,先用 Dim 语句声明括号内为________的数组,再在过程中用________语句指明它的大小。 【答案】空;ReDim 【解析】动态数组的名字在声明时并不知道要占多少内存,因此 Dim 语句中只写数组名与一对空括号。等程序运行起来、数据个数确定之后,再用 ReDim 语句指明数组的大小;ReDim 的下标既可以是常量,也可以是具有确定值的变量。 6. 在 ReDim 语句中添加参数________可以保留数组中原有的数据,但它只能改变________那一维的大小。 【答案】Preserve;最后 【解析】ReDim 在重新分配数组时会把原有数据全部清除并按类型的默认值重新初始化。若在 ReDim 后面加上 Preserve 参数,原有元素会被复制到新数组中保留下来,但它有一个限制:只能改变最后一维的大小,前面几维的大小不能改动。 二、单项选择题 1. 用 Dim a(10) As Integer 声明的数组共有( )个元素。 A. 9 B. 10 C. 11 D. 12 【答案】C 【解析】语句中没有写"下界 To 上界",下界按默认值 0 计算,上界为 10,因此下标从 0 取到 10,一共 11 个元素。用公式验证:10 - 0 + 1 = 11,与结论一致。若误以为有 10 个元素,就忽略了取值为 0 的那一个。 2. 关于数组下标,下列说法正确的是( ) A. 下标的下界可以由 Option Base 语句设置 B. 下标的下界只能取 0 C. 下标必须是变量 D. 下标可以取小数 【答案】A 【解析】数组下标的下界默认是 0,但可以用 Option Base 1 语句把它改成 1,因此下界并不是只能取 0。下标必须是整数,不能取小数;写成常量同样可以,例如 a(3) 中的 3 就是常量下标。 3. 声明二维数组时,每个维数的大小等于( ) A. 上界 B. 下界 C. 上界 − 下界 D. 上界 − 下界 + 1 【答案】D 【解析】每个维数的大小用上界减去下界再加 1 来计算,因为下标从下界一直取到上界,首尾两个都要算进去。只做减法会少算一个,例如下界为 1、上界为 5 时实际有 5 个下标,而上界减下界只得 4。 4. 创建动态数组时,声明数组的 Dim 语句中括号内应( ) A. 写上上界 B. 留空 C. 写上 0 D. 写上 To 【答案】B 【解析】动态数组的大小要到程序运行时才能确定,因此声明时括号内留空,只写出数组名,例如写成 Dim a() As String。等到需要确定大小时,再用 ReDim 语句指明它的下标范围。若在 Dim 中写上了界,它就成了静态数组,以后不能再用 ReDim 改变大小。 5. 重新定义动态数组的大小时,应使用( )语句。 A. Dim B. Static C. ReDim D. Public 【答案】C 【解析】ReDim 是专门用来重新定义动态数组大小的语句,程序中可以多次使用它来改变数组的大小,甚至改变数组的维数。Dim 用于首次声明数组,Static 用于声明过程内的静态变量,Public 用于声明全局变量或数组,都不能改变数组的大小。 6. 在 ReDim 语句中使用 Preserve 参数的作用是( ) A. 清除数组 B. 改变数组的维数 C. 删除数组 D. 保留数组中原有的数据 【答案】D 【解析】执行 ReDim 时原有数据会被清除并按类型的默认值重新初始化,加上 Preserve 之后系统会把这些元素复制到新数组中保留下来。需要注意的是,使用 Preserve 时只能改变最后一维的大小,前面几维的大小不能改动。 7. 使用 ReDim Preserve 时( ) A. 可以改变所有各维的大小 B. 只能改变最后一维的大小 C. 只能改变第一维的大小 D. 不能改变任何一维 【答案】B 【解析】Preserve 参数的限制是只能改变最后一维的大小,前面几维的大小必须保持不变。若确实需要改动前面几维,只能重新声明一个新数组并把需要的数据逐个搬过去,不能直接用 ReDim Preserve 完成。 8. 函数 UBound 的作用是( ) A. 提取数组的最大下标 B. 求数组元素的个数 C. 求数组元素之和 D. 提取数组的最小下标 【答案】A 【解析】UBound 的写法是函数名后跟一对括号,括号中给出数组名,返回的是该数组的最大下标。与之对应的 LBound 返回最小下标。两者配合使用,就可以写出不依赖下标下界设置的循环,例如从 LBound 循环到 UBound。 9. 函数 LBound 的作用是( ) A. 提取数组的最大下标 B. 提取数组的最小下标 C. 求数组元素的个数 D. 求数组元素之和 【答案】B 【解析】LBound 返回数组的最小下标,也就是下标的下界。它与 UBound 是一对:UBound 给出最大下标。要遍历数组的全部元素时,把 LBound 与 UBound 分别作为循环的初值和终值,无论下界是 0 还是 1 都能正确执行。 10. 控件数组由一组类型相同的控件组成,它们( ) A. 共用同一个名称与同一个事件过程 B. 各有不同的名称与事件过程 C. 只能有两个元素 D. 不能共用一个事件过程 【答案】A 【解析】控件数组中的各个控件名称完全相同,共用同一个事件过程,因此只需编写一次代码就能让所有成员都起作用;靠下标来区分是哪一个控件。元素的个数并没有限制,也正因为共用名称,它们才能共享代码。 11. 控件数组中各元素是靠( )区分的。 A. Name 属性 B. Caption 属性 C. Index 属性 D. Text 属性 【答案】C 【解析】控件数组中的控件名称完全相同,无法用 Name 属性区分,靠的是 Index 属性,它标识该控件在数组中的下标,例如 Command1(0) 的 Index 是 0、Command1(1) 的 Index 是 1。 12. 控件数组元素的下标( ) A. 由 Option Base 语句决定 B. 总是从 1 开始 C. 由用户任意指定 D. 总是从 0 开始 【答案】D 【解析】控件数组是系统自动生成的,其元素下标由系统内定,与 Option Base 语句的设置没有关系,一律从 0 开始计数。因此用户不能自行指定起始下标,也不能用 Option Base 1 把它的起点改成 1。 三、程序填空题 1. 下列程序用数组存放 5 个学生的成绩并求平均分。请补充完整下列程序代码。 Option Base 1 Private Sub Command1_Click() Dim a(5) As Single, i As Integer Dim s As Single s = 0 For i = 1 To [1]________ a(i) = Val(InputBox("请输入成绩")) s = s + [2]________ Next i Print "平均分="; [3]________ End Sub 【答案】[1] 5;[2] a(i);[3] s / 5 【解析】数组声明为 a(5),由于前面写了 Option Base 1,它的下标是 1 到 5 共 5 个元素,循环变量 i 应从 1 取到 5,故 [1] 处填 5。每读入一个成绩就把它累加到变量 s 中,当前元素是 a(i),故 [2] 处填 a(i)。平均分等于总分除以人数 5,故 [3] 处填 s / 5。 2. 下列程序产生 10 个两位随机整数存入数组,并输出其中的最大值。请补充完整下列程序代码。 Option Base 1 Private Sub Form_Click() Dim a(10) As Integer, i As Integer, mx As Integer For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 Next i mx = a(1) For i = 2 To [1]________ If a(i) > mx Then mx = [2]________ Next i Print "最大值="; mx End Sub 【答案】[1] 10;[2] a(i) 【解析】数组共有 10 个元素,第一个元素已经作为最大值的初始值取走,因此循环从第 2 个元素比较到第 10 个,故 [1] 处填 10。若当前元素比暂存的最大值还大,就把它换到最大值变量中,故 [2] 处填 a(i)。循环结束后 mx 中保存的就是全部元素中的最大值。 原创精品资源学科网独家享有版权,侵权必究 学科网(北京)股份有限公司 $

资源预览图

考点14 数组的声明与使用《Visual Basic程序设计》内蒙古(对口招生)计算机类 知识点讲解
1
考点14 数组的声明与使用《Visual Basic程序设计》内蒙古(对口招生)计算机类 知识点讲解
2
考点14 数组的声明与使用《Visual Basic程序设计》内蒙古(对口招生)计算机类 知识点讲解
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。