专题六 数组(练习)-《Visual Basic 程序设计》高考备考讲练测(内蒙古)

2025-10-29
| 2份
| 23页
| 65人阅读
| 0人下载

内容正文:

专题六 数组 一:单选题 1:在Visual Basic中,语句Option Base n定义数组下标下界时,n可以是( ) A.0 B.1 C.0或1 D.任意数 【答案】C 【解析】在 Visual Basic 中,Option Base n语句用于设置数组下标的默认下界。该语句中的n只能取两个值:0 或 1。 2:用Dim语句声明某动态数组后,不能建立该数组的是( )语句。 A. ReDim B. 使用Array函数 C. Dim D. 数组对数组赋值" 【答案】C 【解析】Dim仅用于声明数组,对于已用Dim声明的动态数组,再次使用Dim会导致 “重复声明” 错误,且无法创建数组。 3:在Visual Basic中,关于控件数组的叙述,正确的是( ) A.控件数组中所有控件的名称相同,但其Index属性值各不相同 B.控件数组中所有控件的名称相同,但其Value属性值各不相同 C.控件数组中每个元素都是独立的控件,因此都有各自的事件过程 D.以上说法都正确 【答案】A 【解析】控件数组中所有控件共享同一个名称,通过唯一的Index属性值(非负整数)区分不同元素。 4:数组声明语句Dim a(0 to 3, -2 to 2,0 to 5)中,数组a包含元素的个数为( )。 A.120 B.75 C.60 D.13 【答案】A 【解析】第一维:下界为 0,上界为 3,长度为 3 - 0 + 1 = 4;第二维:下界为 - 2,上界为 2,长度为 2 - (-2) + 1 = 5;第三维:下界为 0,上界为 5,长度为 5 - 0 + 1 = 6。因此,数组元素的总个数为 4 × 5 × 6 = 120 5:下列程序 Option Base 1 Private Sub Form_Click() Dim a a=Array(19,17,15,13,11,9,7,5,3,11) For i=1 To 10 If a(i)/3=a(i)\3 Or a(i)/5=a(i)\5 Then Sum=Sum+a(i) End If Next i Print "Sum="; Sum End Sub 运行时输出Sum的值是( ) A.27 B.15 C.32 D.20 【答案】C 【解析】程序的功能是计算数组中能被 3 或 5 整除的元素之和。 6:在Visual Basic中,设有数组声明语句: Option Base 0 Dim b(-1 To 10, 2 To 9,20) 则数组b中共有( )个元素。 A.1800 B.1920 C.2016 D.2310 【答案】C 【解析】第一维:-1 到 10 → 12 个元素;第二维:2 到 9 → 8 个元素;第三维:0 到 20 → 21 个元素;总数:12×8×21=2016。 7:在Visual Basic中,下列数组定义的语句中,错误的是( ) A.Dim a(10)as Integer B.Dim a(0 to 5,1 to 3)as Integer C.Dime a(3,5)as Integer D.Dim a(3,1 to 4)as Integer 【答案】C 【解析】在 Visual Basic 中,数组定义的正确关键字是Dim,语法格式为Dim 数组名(下标范围) As 数据类型。 8:在Visual Basic中,声明一个动态数组,下列语句正确的是( ) A.Dim a(n) as Integer B.Dim a( ) as Integer C. Dim a( , ) as Integer D. Dim a(1 to n) 【答案】B 【解析】Dim a( ) as Integer使用空括号声明,符合动态数组的声明语法,后续可通过ReDim指定大小。 9:在Visual Basic中,关于数组的叙述,下列说法正确的是( ) A.数组名的命名规则与简单变量相同 B.使用Static语句定义任何类型的数组时,都把该数组的全部元素初始化为0 C.使用Dim语句定义任何类型的数组时,都把该数组的全部元素初始化为空字符串 D.VB支持数组的隐式定义 【答案】A 【解析】Static语句用于定义静态数组,但其初始化规则取决于数据类型;Dim语句定义的数组初始化规则同样依赖数据类型;VB 中数组必须先声明(显式定义)后使用,不支持隐式定义。 10:在Visual Basic中,下列说法不正确的是( ) A.使用ReDim语句可以改变数组的维数 B.使用ReDim语句可以改变数组的类型 C.使用ReDim语句可以改变数组的每一维的大小 D.ReDim语句可以使原数组中的内容被清除 【答案】B 【解析】ReDim语句不能改变数组的数据类型。数组的类型在首次声明(如Dim arr() As Integer)时确定,后续ReDim只能调整大小,无法修改类型。 11:下列关于数组的说法中,正确的是( ) A.一个数组中只能包含相同类型的数据 B.数组只能在模块中定义,不能在过程中定义 C.在有些情况下,数组与普通变量一样可以不定义,先使用 D.定义数组时,数组中的每一维元素的个数必须是常量,不能是变量或表达式 【答案】A 【解析】数组既可以在模块级定义,也可以在过程级中定义;在 Visual Basic 中,数组必须先定义后使用;定义静态数组时,各维度元素个数必须是常量;但定义动态数组时,可先声明为空数组,再通过ReDim语句用变量或表达式指定大小。 12:在窗体上画一个名称为 Label1 的标签,然后编写如下事件过程: Private Sub Form_Click( ) Dim arr(10, 10) As Integer Dim i As Integer, j As Integer For i = 1 To 4 For j = 2 To 4 arr(i, j) = i * j Next j Next i Label1.Caption = Str(arr(2, 3) + arr(3, 4)) End Sub程序运行后,单击窗体,在标签中显示的内容是( ) A. 12 B. 13 C. 15 D. 18 【答案】D 【解析】程序的功能是给二维数组部分元素赋值后,计算指定元素的和并显示。 13:数组 a(-3 to 5,4)中共有( )个元素。 A.45 B.32 C.36 D.40 【答案】A 【解析】第一维:下界为 - 3,上界为 5,长度为 5 - (-3) + 1 = 9;第二维:未显式指定下界,默认下界为 0,上界为 4,长度为 4 - 0 + 1 = 5。因此,数组元素的总个数为 9 × 5 = 45。 14:设整数型一维数组a的下标从1开始,有10个变量,对该数组的操作有如下事件过程: Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer For i = 1 To 9 For j = i + 1 To 10 If a(i) > a(j) Then k = a(i) a(i) = a(j) a(j) = k Enf next j Next i End Sub 关于该过程功能的叙述正确的是( )。 A.该过程能对数组a进行升序排序 B.该过程能对数组a进行降序排序 C.该过程能对数组a进行逆序存放 D.该过程能对数组a逆序存放后又顺序存放 【答案】A 【解析】该事件过程实现的是冒泡排序算法。 15:设执行以下程序段时依次输入1、3、5,执行结果为( )。 Dim a(4) As Integer Dim b(4) As Integer For K =0 To 2 a(K+1) =Val(InputBox(“请输入数据:")) b(3-K) =a(K+1) Next K Print b(K) A.1 B.3 C. 5 D.0 【答案】A 【解析】当K=0时:输入 1,a(0+1)=a(1)=1;b(3-0)=b(3)=a(1)=1。当K=1时:输入 3,a(1+1)=a(2)=3;b(3-1)=b(2)=a(2)=3。当K=2时:输入 5,a(2+1)=a(3)=5;b(3-2)=b(1)=a(3)=5。循环结束后:K的值为 3。输出b(K)=b(3),而b(3)在K=0时被赋值为 1。 16:设有如下程序: Private Sub form_Click() Dim a(10) As Integer,p(3) As Integer K=5 For i=1 to 10 a(i)=i Next i For i=1 to 3 P(i)=a(i*i) Next i For i=1 to 3 K=k+p(i)*2 Next i Print k End Sub 程序运行后,单击窗体,则在窗体上显示的是( ) A. 33 B.35 C. 37 D.38 【答案】A 【解析】第一个循环i=1 to 10,a(i)=i,则a(1)=1,a(4)=4,a(9)=9正确。第三个循环计算:k = 5 + (1×2) + (4×2) + (9×2) = 5 + 2 + 8 + 18 = 33。 17:对动态数组ReDim Preserve(X,Y)操作中参数X和Y是指( ) A. 改变ReDim Preserve操作前的大小 B. 改变ReDim Preserve操作后的位置 C. 改变ReDim Preserve操作后的大小 D. 改变ReDim Preserve操作前的位置 【答案】C 【解析】ReDim语句用于重新定义动态数组的大小,Preserve关键字用于保留数组中原来的数据。ReDim Preserve(X,Y)中,X和Y表示重新定义后数组的大小。 18:在Visual Basic中,有下列代码: Private Sub Form_Click() Dim A(4) As Integer, B(4) As Integer For K = 0 To 2 A(K + 1) = Val(InputBox("请输入一个整数:")) B(3 - K) = A(K + 1) Next K Print B(K) End Sub 运行程序,单击窗体,依次输入3,6,9,程序的运行结果为( ) A.1 B.3 C.6 D.9 【答案】B 【解析】循环变量K在Next K后自动加 1,退出循环时K=3。输出B(K)=B(3),而B(3)在K=0时被赋值为 3。 19:在Visual Basic中,有以下程序代码: Private Sub Command1_Click() A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) N = UBound(A) For K = 0 To UBound(A) / 2 Print A(K) * A(N); N = N - 1 Next K End Sub 程序运行后,单击命令按钮Command1,输出结果为( ) A. 2 6 12 20 30 B. 2 12 20 56 90 C. 30 28 24 18 10 D. 10 18 24 28 30 【答案】D 【解析】具体循环过程:K=0:A(0)*A(9) = 1*10 = 10,N=8;K=1:A(1)*A(8) = 2*9 = 18,N=7;K=2:A(2)*A(7) = 3*8 = 24,N=6;K=3:A(3)*A(6) = 4*7 = 28,N=5;K=4:A(4)*A(5) = 5*6 = 30,N=4。输出结果:依次输出的乘积为10 18 24 28 30。 20:在Visual Basic中,有如下代码: Option Base 1 Private Sub Command1_Click() Dim a(3, 3) As Integer Dim i As Integer, j As Integer, s As Integer s = 0 For i = LBound(a, 1) To UBound(a, 1) For j = LBound(a, 2) To UBound(a, 2) a(i, j) = (i - 1) * 3 + j If i >= j Then s = s + a(i, j) End If Next j Next i Print s End Sub 运行程序时,单击命令按钮,窗体上的输出结果为( ) A.15 B.19 C.26 D.34 【答案】D 【解析】i >= j的元素和为1+4+5+7+8+9=34。 二:填空题 1:如果有声明Dim a(5) As Integer,则该数组共占用______个字节内存。 【答案】12 【解析】总占用内存为:元素个数 × 每个元素占用字节数 = 6 × 2 = 12 字节。 2:下列语句Dim a(-1 to 3,4)声明的数组a包含的数组元素个数有_____________个。 【答案】25 【解析】在 Visual Basic 中,计算二维数组元素个数的方法是各维度(上界 - 下界 + 1)的乘积。 3:要声明一个长度为256个字符的定长字符串变量str,正确的语句是__________。 【答案】Dim str As String*256 【解析】在 Visual Basic 中,声明定长字符串变量的语法为Dim 变量名 As String * 长度,其中*用于指定字符串的固定长度。因此,声明一个长度为 256 个字符的定长字符串变量str,正确的语句是Dim str As String * 256。 4:在使用ReDim语句重新定义数组时,为保留原先的数据,应使用关键字____________。 【答案】preserve 【解析】在 Visual Basic 中,ReDim语句用于重新定义动态数组的大小。若需要保留数组中原有的数据,必须使用Preserve关键字。 5:一组具有相同名称,不同下标的下标变量称为______。 【答案】数组 【解析】在 Visual Basic 中,数组是由一组具有相同名称、不同下标的变量(即下标变量)组成的集合。 6:对动态数组arr进行重新定义,使其包含 5 个元素且保留原有数据,正确的语句是_______。 【答案】ReDim Preserve arr(1 To 5)或 ReDim Preserve arr (0 To 4) 【解析】在 Visual Basic 中,ReDim语句用于重新定义动态数组的大小,Preserve关键字用于保留数组中原有的数据。 7:控件数组由一组_______相同、_______不同的控件组成,它们共享同一个事件过程。 【答案】名称;索引 【解析】控件数组的所有控件必须拥有相同的Name属性(名称),通过唯一的Index属性(索引,整数)区分不同元素。 8:若有一个标签控件数组Label1,要设置索引为 2 的标签标题为 “Hello”,语句为_______。 【答案】Label1(2).Caption = "Hello" 【解析】访问控件数组的某个元素时,需通过 “数组名 (索引)” 指定,再操作其属性。例如Label1(2)表示控件数组中索引为 2 的标签,通过.Caption属性设置标题。 9:控件数组的Index属性值的类型是_______,且在数组内必须_______。 【答案】整数(Integer);唯一 【解析】Index属性的值只能是整数(可正可负,如 - 1、0、1),但同一控件数组中不能有重复的Index,否则会导致冲突。 10:下列程序 Option Base 1 Private Sub Form_Click() Dim a(100) For i=1 To 10 j=i*i a(j)=j Next i Print a(25); End Sub 程序运行时输出的结果是_________。 【答案】25 【解析】循环中当i=5时,j=25,a(25)被赋值为 25,因此输出结果为 25。 三:程序填空题 1:在visual basic中,对具有10个数的数组,求最大值、平均值,数组中超过平均值的个数,并显示数组的值和计算的结果。 Option Base 1 Private Sub Form_Click() Dim x, max As Integer, imax As Integer Dim s As Integer, n As Integer Dim avg As Integer, k x = Array(1, 10, 2, 5, 8, 9, 6, 7, 3, 9) Print x(1); max = x(1): imax = 1: s = x(10) For i = 2 To 10 x(i) = Int(100 * Rnd + 1) Print x(i); s = s + x(i) If x(i) > max Then ____(1)______________ Next i avg = s / 10 Print For Each k In x If _____(2)___________Then n = n + 1 Next k Print max, avg, n End Sub 【答案】 (1) max = x(i) (2) k > avg 【解析】求数组中的最大值和最小值,思路是假定数组中的第一个元素为最大值或最小值,依次与数组中的其他元素做对比,最终求出结果。 2. 下列程序的功能是找出n×m矩阵中的最大数及其位置。请将程序补充完整。 Private Sub Command1_Click() N = InputBox("请输入数组第一维上界") M = InputBox("请输入数组第二维上界") __(1)________ A(N, M) For i = 1 To N For j = 1 To M ___(2)_______ = InputBox("请输入数组元素 A(" & i & "," & j & ")") Next j Next i End Sub Private Sub Command2_Click() Max = ____(3)______ For i = 1 To N For j = 1 To M If Max < A(i, j) Then Max = ___(4)_______ I1 = ___(5)_______ J1 = ____(6)______ End If Next j Next i End Sub 【答案】 (1)ReDim (2)A(i, j) (3)A(1, 1) (4)A(i, j) (5)i (6)j 【解析】本题考查动态数组与最大值查找。数组A需用ReDim动态定义;输入数组元素A(i,j);初始Max设为第一个元素A(1,1);找到更大值时,更新Max为A(i,j),记录位置i和j。 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 专题六 数组 一:单选题 1:在Visual Basic中,语句Option Base n定义数组下标下界时,n可以是( ) A.0 B.1 C.0或1 D.任意数 2:用Dim语句声明某动态数组后,不能建立该数组的是( )语句。 A. ReDim B. 使用Array函数 C. Dim D. 数组对数组赋值" 3:在Visual Basic中,关于控件数组的叙述,正确的是( ) A.控件数组中所有控件的名称相同,但其Index属性值各不相同 B.控件数组中所有控件的名称相同,但其Value属性值各不相同 C.控件数组中每个元素都是独立的控件,因此都有各自的事件过程 D.以上说法都正确 4:数组声明语句Dim a(0 to 3, -2 to 2,0 to 5)中,数组a包含元素的个数为( )。 A.120 B.75 C.60 D.13 5:下列程序 Option Base 1 Private Sub Form_Click() Dim a a=Array(19,17,15,13,11,9,7,5,3,11) For i=1 To 10 If a(i)/3=a(i)\3 Or a(i)/5=a(i)\5 Then Sum=Sum+a(i) End If Next i Print "Sum="; Sum End Sub 运行时输出Sum的值是( ) A.27 B.15 C.32 D.20 6:在Visual Basic中,设有数组声明语句: Option Base 0 Dim b(-1 To 10, 2 To 9,20) 则数组b中共有( )个元素。 A.1800 B.1920 C.2016 D.2310 7:在Visual Basic中,下列数组定义的语句中,错误的是( ) A.Dim a(10)as Integer B.Dim a(0 to 5,1 to 3)as Integer C.Dime a(3,5)as Integer D.Dim a(3,1 to 4)as Integer 8:在Visual Basic中,声明一个动态数组,下列语句正确的是( ) A.Dim a(n) as Integer B.Dim a( ) as Integer C. Dim a( , ) as Integer D. Dim a(1 to n) 9:在Visual Basic中,关于数组的叙述,下列说法正确的是( ) A.数组名的命名规则与简单变量相同 B.使用Static语句定义任何类型的数组时,都把该数组的全部元素初始化为0 C.使用Dim语句定义任何类型的数组时,都把该数组的全部元素初始化为空字符串 D.VB支持数组的隐式定义 10:在Visual Basic中,下列说法不正确的是( ) A.使用ReDim语句可以改变数组的维数 B.使用ReDim语句可以改变数组的类型 C.使用ReDim语句可以改变数组的每一维的大小 D.ReDim语句可以使原数组中的内容被清除 11:下列关于数组的说法中,正确的是( ) A.一个数组中只能包含相同类型的数据 B.数组只能在模块中定义,不能在过程中定义 C.在有些情况下,数组与普通变量一样可以不定义,先使用 D.定义数组时,数组中的每一维元素的个数必须是常量,不能是变量或表达式 12:在窗体上画一个名称为 Label1 的标签,然后编写如下事件过程: Private Sub Form_Click( ) Dim arr(10, 10) As Integer Dim i As Integer, j As Integer For i = 1 To 4 For j = 2 To 4 arr(i, j) = i * j Next j Next i Label1.Caption = Str(arr(2, 3) + arr(3, 4)) End Sub程序运行后,单击窗体,在标签中显示的内容是( ) A. 12 B. 13 C. 15 D. 18 13:数组 a(-3 to 5,4)中共有( )个元素。 A.45 B.32 C.36 D.40 14:设整数型一维数组a的下标从1开始,有10个变量,对该数组的操作有如下事件过程: Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer For i = 1 To 9 For j = i + 1 To 10 If a(i) > a(j) Then k = a(i) a(i) = a(j) a(j) = k Enf next j Next i End Sub 关于该过程功能的叙述正确的是( )。 A.该过程能对数组a进行升序排序 B.该过程能对数组a进行降序排序 C.该过程能对数组a进行逆序存放 D.该过程能对数组a逆序存放后又顺序存放 15:设执行以下程序段时依次输入1、3、5,执行结果为( )。 Dim a(4) As Integer Dim b(4) As Integer For K =0 To 2 a(K+1) =Val(InputBox(“请输入数据:")) b(3-K) =a(K+1) Next K Print b(K) A.1 B.3 C. 5 D.0 16:设有如下程序: Private Sub form_Click() Dim a(10) As Integer,p(3) As Integer K=5 For i=1 to 10 a(i)=i Next i For i=1 to 3 P(i)=a(i*i) Next i For i=1 to 3 K=k+p(i)*2 Next i Print k End Sub 程序运行后,单击窗体,则在窗体上显示的是( ) A. 33 B.35 C. 37 D.38 17:对动态数组ReDim Preserve(X,Y)操作中参数X和Y是指( ) A. 改变ReDim Preserve操作前的大小 B. 改变ReDim Preserve操作后的位置 C. 改变ReDim Preserve操作后的大小 D. 改变ReDim Preserve操作前的位置 18:在Visual Basic中,有下列代码: Private Sub Form_Click() Dim A(4) As Integer, B(4) As Integer For K = 0 To 2 A(K + 1) = Val(InputBox("请输入一个整数:")) B(3 - K) = A(K + 1) Next K Print B(K) End Sub 运行程序,单击窗体,依次输入3,6,9,程序的运行结果为( ) A.1 B.3 C.6 D.9 19:在Visual Basic中,有以下程序代码: Private Sub Command1_Click() A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) N = UBound(A) For K = 0 To UBound(A) / 2 Print A(K) * A(N); N = N - 1 Next K End Sub 程序运行后,单击命令按钮Command1,输出结果为( ) A. 2 6 12 20 30 B. 2 12 20 56 90 C. 30 28 24 18 10 D. 10 18 24 28 30 20:在Visual Basic中,有如下代码: Option Base 1 Private Sub Command1_Click() Dim a(3, 3) As Integer Dim i As Integer, j As Integer, s As Integer s = 0 For i = LBound(a, 1) To UBound(a, 1) For j = LBound(a, 2) To UBound(a, 2) a(i, j) = (i - 1) * 3 + j If i >= j Then s = s + a(i, j) End If Next j Next i Print s End Sub 运行程序时,单击命令按钮,窗体上的输出结果为( ) A.15 B.19 C.26 D.34 二:填空题 1:如果有声明Dim a(5) As Integer,则该数组共占用______个字节内存。 2:下列语句Dim a(-1 to 3,4)声明的数组a包含的数组元素个数有_____________个。 3:要声明一个长度为256个字符的定长字符串变量str,正确的语句是__________。 4:在使用ReDim语句重新定义数组时,为保留原先的数据,应使用关键字____________。 5:一组具有相同名称,不同下标的下标变量称为______。 6:对动态数组arr进行重新定义,使其包含 5 个元素且保留原有数据,正确的语句是_______。 7:控件数组由一组_______相同、_______不同的控件组成,它们共享同一个事件过程。 8:若有一个标签控件数组Label1,要设置索引为 2 的标签标题为 “Hello”,语句为_______。 9:控件数组的Index属性值的类型是_______,且在数组内必须_______。 10:下列程序 Option Base 1 Private Sub Form_Click() Dim a(100) For i=1 To 10 j=i*i a(j)=j Next i Print a(25); End Sub 程序运行时输出的结果是_________。 三:程序填空题 1:在visual basic中,对具有10个数的数组,求最大值、平均值,数组中超过平均值的个数,并显示数组的值和计算的结果。 Option Base 1 Private Sub Form_Click() Dim x, max As Integer, imax As Integer Dim s As Integer, n As Integer Dim avg As Integer, k x = Array(1, 10, 2, 5, 8, 9, 6, 7, 3, 9) Print x(1); max = x(1): imax = 1: s = x(10) For i = 2 To 10 x(i) = Int(100 * Rnd + 1) Print x(i); s = s + x(i) If x(i) > max Then ____(1)______________ Next i avg = s / 10 Print For Each k In x If _____(2)___________Then n = n + 1 Next k Print max, avg, n End Sub 2. 下列程序的功能是找出n×m矩阵中的最大数及其位置。请将程序补充完整。 Private Sub Command1_Click() N = InputBox("请输入数组第一维上界") M = InputBox("请输入数组第二维上界") __(1)________ A(N, M) For i = 1 To N For j = 1 To M ___(2)_______ = InputBox("请输入数组元素 A(" & i & "," & j & ")") Next j Next i End Sub Private Sub Command2_Click() Max = ____(3)______ For i = 1 To N For j = 1 To M If Max < A(i, j) Then Max = ___(4)_______ I1 = ___(5)_______ J1 = ____(6)______ End If Next j Next i End Sub 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

专题六 数组(练习)-《Visual Basic 程序设计》高考备考讲练测(内蒙古)
1
专题六 数组(练习)-《Visual Basic 程序设计》高考备考讲练测(内蒙古)
2
专题六 数组(练习)-《Visual Basic 程序设计》高考备考讲练测(内蒙古)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。