




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组题型分析29. 以下有关数组的说明中,错误的是_29_。(A)根据数组说明的方式,可将数组分为动态数组和静态数组(B)在过程中,不能用Private语句定义数组(C)利用ReDim语句重新定维时,不得改变已经定义说明过的数组的数据类型(D)数组重新定维后,原有的数组元素内容将不予保留答案:D分析:要保留数组元素原有的内容用Preserve语句。26下面有关数组处理的叙述中,不正确的是26。在过程中用ReDim语句定义的动态数组,其下标的上下界可为赋了值的变量在过程中,可以使用Dim、Private和Static语句定义数组用ReDim语句重新定义动态数组时,不得改变该数组的数据类型可用Public语句在窗体模块的通用说明处定义一个全局数组(A)(B)(C)(D)答案:D分析:在过程中不能用Private定义数组;Public用在标准模块中定义数组。31. 名为sort的Sub子过程的形式参数为一数组,以下的定义语句中正确的是_31_。(A)Private Sub sort(A() As Integer)(B)Private Sub sort(A(10) As Integer)(C)Private Sub sort(ByVal A() As Integer)(D)Private Sub sort(A(,) As Integer)答案:A分析:数组参数必须为ByRef方式(传地址方式)传送。27. 下列关于数组的叙述中,错误的是_27_。(A)在过程中可以用Dim语句对形参数组进行说明(B)数组是同类变量的一个有序的集合(C)数组元素可以是控件(C)数组在使用之前,必须先用数组说明语句进行说明答案:A分析:形参中不使用Dim语句说明变量和数组。31. 某过程的说明语句中,正确的数组说明语句是_31_。Const N As Integer=4Dim L As Integer Dim X(L) As Integer Dim A(K) As IntegerConst K As Integer=3 Dim B(N) As Integer Dim Y(2000 to 2008) As Integer(A)(B)(C)(D)答案:C分析:在定义数组时,每一维的元素个数必须是常数,不能是变量或表达式。(27)下列语句中的27语句可以用来正确地声明一个动态数组。(A)Private A(n) As Integer(B)Dim A() As Integer(C)Dim A(,) As Integer(D)Dim A(1 to n)答案:B分析:给数组附以一个空维数表,这样就将数组声明为动态数组。25在窗体的通用声明处有语句Dim A() As Single,以下在某事件过程中重定义此数组的一组正确语句是:25。(A)ReDim A(3,3)(B)ReDim A(3,3)ReDim A(4,4) As IntegerReDim Preserve A(4,4)(C)ReDim A(3,3)(D)ReDim A(3,3)ReDim A(3,3) As IntegerReDim Preserve A(3,4)答案:D分析:ReDim语句在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。28定义两个过程Private Sub1(St()As String)和Private Sub2(Ch()As String*6),在调用过程中用Dim S(3) As String*6,A(3) As String定义了两个字符串数组。下面调用语句中正确的有28。Call Sub1(S)Call Sub1(A)Call Sub2(A)Call Sub2(S)(A)(B)(C)(D)答案:D分析:实参和形参的类型要对应。27.以下有关控件数组的说法中错误的是(27)。(A)控件数组由一组具有共同名称和相同类型的控件组成(B)控件数组中的每一个控件共享同样的事件过程(C)控件数组中的每个元素的下标由控件的Index属性指定(D)同一控件数组中的元素只能有相同的属性设置值答案:D分析:27.下列有关数组的说法中,不正确的是。(A)在窗体模块中不可以定义全局数组(B)可以使用Erase语句释放所有数组所占据的存储空间(C)语句Dim X(3.6+2) As Integer定义了一个维上界是6的一维的整形数组(D)形参数组的类型可以是定长字符串类型答案:B分析:使用Erase语句重新初始化固定大小的数组中的元素,以及释放动态数组存储空间。29下面有关数组的说法中,错误的是。A)数组必须先定义后使用B)数组形参可以是定长字符串类型C)Erase语句的作用是对已定义数组的值重新初始化D)定义数组时,数组维界值可以不是整数解析:Erase语句重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。答案:C28. 以下有关数组的说法中,正确的是_。A.数组是有序变量的集合,序列中的变量类型可以不同B.数组下标用以确定数组元素在数组中的位置,下标取值只能是0或1C.在一定条件下动态数组可以反复改变其维数与大小D.固定大小数组也可以使用ReDim语句改变其大小答案:C分析:固定大小数组不能使用ReDim语句改变其大小。28下面有关数组的说法中, 是错误的。A) 在模块中由于未使用Option Explicit语句,所以数组不用先定义就可以使用,只不过是Variant类型B) 过程定义中,形参数组可以是定长字符串类型C) Erase语句的作用是对固定大小数组的值重新初始化或收回分配给动态数组的存储空间D) 定义数组时,数组维界值可以不是整数答案:C24以下说法不正确的是 24 。A) 使用不带关键字Preserve的ReDim语句可以重新定义数组的维数B) 使用不带关键字Preserve的ReDim语句可以改变数组各维的上、下界C) 使用不带关键字Preserve的ReDim语句可以改变数组的数据类型D) 使用不带关键字Preserve的ReDim语句可以对数组中的所有元素进行初始化答案:C27. 以下对数组参数的说明中,错误的是 27 。A) 在过程中可以用Dim语句对形参数组进行声明B) 形参数组只能按地址传递C) 实参为动态数组时,可用ReDim 语句改变对应形参数组的维界D) 只需把要传递的数组名作为实参,即可调用过程答案:A24以下有关数组参数的说明中正确的是 24 。A)在过程中也可用Dim语句对形参数组进行说明B)动态数组作为实参时,可用ReDim语句在过程中改变对应形参数组的维界C)调用过程时,数组名不能作为实参D)数组可以按地址传递也可以按值传递答案:B30下面有关数组的说法中,正确的是 30 。A) 数组的维下界不可以是负数B) 模块通用声明处有Option Base 1,则模块中数组定义语句Dim A(0 To 5) 会与之冲突C) 模块通用声明处有Option Base 1,模块中Dim A(0 To 5),则A数组第一维维下界为0D) 模块通用声明处有Option Base 1,模块中Dim A(0 To 5),则A数组第一维维下界仍为1答案:C解析:以模块中Dim的定义为优先。25下面有关数组处理的叙述中,正确的是_。A)在过程中使用ReDim语句可以改变动态数组的数据类型B)在过程中,可以使用Dim、Private和Static语句来定义数组C)用ReDim语句重新定义动态数组时,可以改变数组的大小,但不能改变数组的维数D)不可以用Public语句在窗体模块的通用处说明一个全局数组答案:D25. 下列有关数组的叙述中,不正确的是(25)。在过程中使用ReDim语句定义的动态数组,其下标的上下界可以是变量数组作为形式参数时,传递的是每一个数组元素的值在窗体模块的通用说明处可以使用Public说明一个全局数组数组定义语句中可以用负数或小数来指定某一维的维下界或维上界的值A)B)C)D)答案:A27. 下列有关控件数组的说法中,错误的是(27)。A)控件数组由一组具有相同名称和相同类型的控件组成,不同类型的控件无法组成控件数组B)控件数组中的所有控件不得具有各自不同的属性设置值C)控件数组中的所有控件共享同一个事件过程D)控件数组中每个元素的下标由控件的Index属性指定答案:B25.以下说法中,错误的是 25 。A)使用缺省Preserve关键字的ReDim语句可以改变数组的维数和大小B)ReDim语句只能出现在过程中C)使用ReDim语句重新定义的动态数组,只能比原数组大D)使用ReDim语句可以对动态数组的所有元素进行初始化答案:C4. 执行下面程序后,A(1,3)的值是_(4)_,A(2,2)的值是_(5)_,A(3,1)的值是_(6)_。Option ExplicitPrivate Sub Form_Click() Dim A(3, 3) As Integer, I As Integer Dim J As Integer, K As Integer, N As Integer For K = 1 To 5 If K = 3 ThenFor I = 1 To 6 - KA(K - 3 + I, I) = NN = N - 1Next IElseFor I = 1 To KA(K - I + 1, 3 - I + 1) = NN = N - 1Next IEnd IfNext KFor K = 1 To 3For I = 1 To 3Print A(K, I);Next IPrintNext KEnd Sub621 853 974答案:分析:9. 本程序的功能是在二维数组中查找鞍点元素,即该元素在所在行中为最大,且在所在列中为最小。在一个数组中可能存在,也可能不存在这样的元素。数组各元素的值从文件data.txt中读取。Private Sub Form_Click()Dim a(3, 3) As Integer, i As Integer, j As IntegerDim maxvr As Integer, col As Integer, flg As IntegerOpen data.txt For Input As #1For i = 1 To 3从文件中读入数据,并打印出来For j = 1 To 3Input #1, a(i, j)Print a(i, j);Next jPrintNext iFor i = 1 To 3maxvr = a(i, 1)col = 1For j = 2 To 3If maxvr a(j,col) Then Exit ForNext jIf j 3 ThenPrint a(; i; ,; col; )=; a(i, col)flg = 1End IfIfThen Print 鞍点元素不存在flg = 0Next iEnd Sub7. 下面程序的功能是当循环次数一定时,统计生成互不相同的100之间的随机整数的个数。Option ExplicitOption Base 1Private Sub Form_Click()Dim Data() As Integer, I As Integer,Idx As IntegerDim N As Integer, Temp As Integer,Flg As BooleanN=InputBox(输入循环次数)ReDim Data(1)Idx=1Data(1)=Int(100*Rnd(1)+1For I=1 To NTemp=Int(100*Rnd(1)+1_Flg=FalseCall Compare(Data,Temp,Flg)If Flg=True ThenIdx=Idx+1_ReDim PreServe Data(Idx)Data(Idx)=TempEnd IfNext IPrint 生成;Idx;个不相同的整数For I=1 To IdxPrint Data(I);If I Mod 10=0 Then PrintNext IEnd SubPrivate Sub Compare(Arry() As Integer, K As Integer, Logic As Boolean)Dim Ub As Integer, I As Integer_Ub=UBound(arry)For I=1 To UbIf Arry(I)=K Then_Exit SubEnd IfNext ILogic=TrueEnd Sub答案:分析:5.下面的事件过程执行结束后,A(2)是(9),A(3)是(10),A(7)是(11)。Option ExplicitOption Base 1Private Sub Command1_Click()Dim A(10) As IntegerDim i As Integer, j As Integer, K As IntegerFor i = 1 To 10A(i)= 1Next ii = 2Do While i = 10If A(i)= 1 Thenj = i + iFor K = j To 10 Step iA(K)= 0Next KEnd Ifi = i + 1LoopFor K = 2 To 10If A(K)= 1 Then A(K)= KNext KEnd Sub答案:A(2)是2,A(3)是3,A(7)是76本程序的功能是:产生10个个位数互不相同的三位随机正整数,并存放到下标与其个位数相同的数组元素中。例如,395应存到a(5)中。Option ExplicitPrivate Sub Form_Click()Dim a(9) As Integer,x As Integer,k As Integer,i As IntegerRandomizeDo While i = 9x = Int(Rnd * 900+100)(12)k = x Mod 10If a(k)= 0 Thena(k)= x(13)i = i + 1End IfLoopFor j = 0 To 9Print a(i);Next iEnd Sub2执行下面的程序,单击窗体,则在窗体上显示的第一行是(2),第二行是(3)Private Sub Form_Click()Dim a(3, 3) As Integer, i As Integer, j As IntegerFor i = 1 To 3For j = 1 To 3a(i, j)=(i - 1)* 2 + jNext jNext iFor j = 1 To 3For i = j To 3Print a(j, i);Next iPrintNext jEnd Sub123 345 567 答案:457分析:过程前部分为给数组a赋初值,后部分为输出。但要注意的是,内循环的初值为外循环的循环变量j。4执行下面程序,单击窗体,在立即窗口上显示的第一行是(7),第二行是(8)。Option ExplicitDim A As IntegerPrivate Sub Form_Click()Dim B As IntegerDim D As IntegerA = 1: B = 2D = fun(A, fun(A, B)Debug.Print A; B; DEnd SubPrivate Function fun(K As Integer, N As Integer) As IntegerDebug.Print K; N;K = N + A + KN = K + A + Nfun = K + NDebug.Print funEnd FunctionAKBNDfunN打印12121441014142258804148080221080答案:(7)41480(8)221080分析:本题的难点是子过程调用和形参与实参结合的对应关系,以及模块级变量A的数据传递关系。A在程序运行过程中始终保持最新计算的值,它和变量K为传址关系,A的赋值过程为1、4、22, A的赋值过程为2、10。N的赋值过程为2、10、14、58,K的赋值过程为1、4、22。6运行下面的程序,单击命令按钮Command1,则显示在文本框Text1中的内容是(13),A(4)的值是(14),A(5)的值是(15)。Option ExplicitPrivate Sub Command1_Click()Dim a(8) As Integer, i As Integer, k As Integera(1)= 1: a(2)= 4: a(3)= 6: a(4)= 4a(5)= 6: a(6)= 8: a(7)= 6: a(8)= 1Call Stat(a, k)Text1 = K= & Str(k)Print a(4); a(5)End SubPrivate Sub Stat(b() As Integer, n As Integer)Dim Idx As Integer, Count As Integer, p As IntegerCount = UBound(b)DoIdx = Idx + 1p = Idx + 1Do While p = CountIf b(Idx)= b(p)Thenb(p)= b(Count)Count = Count - 1Elsep = p + 1End IfLoopn = CountLoop While Idx CountEnd SubnCountpIdxb(Idx) = b(p)821b(1) = b(2)False3b(1) = b(3)False4b(1) = b(4)False5b(1) = b(5)False6b(1) = b(6)False7b(1) = b(7)False8b(1) = b(8)Truea(8)=17732b(2) = b(3)False4b(2) = b(4)Truea(4)=66b(2) = b(4)False5b(2) = b(5)False6b(2) = b(6)False673b(3) = b(4)Truea(4)=854b(3) = b(4)False5b(3) = b(5)Truea(5)=64454答案:(13)K= 4(14)8(15)6分析:While型循环的条件为假时离开循环,两个Do循环的条件p = Count和Idx Count中三个变量都在循环中发生变化,所在分析时要特别小心。4执行下面程序,从键盘输入3,程序运行结束后,A(1,1)的值是(7),A(2,2)的值是(8);A(2,3)的值是(9)。Private Sub Form_Click()Dim I As Integer, J As Integer, K As IntegerDim A() As Integer, N As IntegerN = InputBox(输入N)ReDim A(N, N)For I = 1 To NFor J = 1 To NK = K + 1A(I, J)= K + 10Next JNext ICall Sub1(A, N)End SubPrivate Sub Sub1(A() As Integer, N As Integer)Dim I As Integer, J As IntegerDim T As Integer, K As IntegerK = N + 1For I = 1 To Int(N / 2)For J = I To N - IT = A(I, J)A(I, J)= A(K - J, I)A(K - J, I)= A(K - I, K - J)A(K - I, N + 1 - J)= A(J, K - I)A(J, K - I)= TNext JNext IEnd SubNIJKTA(I, J)A(K - J, I)A(K - I, K - J)A(J, K - I)1117191311 12 13 14 15 1617 18 193114111719131117 12 1114 15 16 19 18 131214181617 14 1118 15 1219 16 1321214181612答案:(7)17(8)15(9)12分析:过程Form_Click的功能主要是给数组A赋初值,过程Sub1的功能是将数组元素按一定的规律进行交换,其中用到了临时变量T。5.执行下面程序,单击命令按钮Command1 后,A(1,3)值是【12】,A(2,2)值是【13】,A(3,2)值是【14】。Private Sub Command1_Click()Dim I As Integer , J As IntegerDim A(1 To 3, 1 To 3) As Integer ,N As IntegerN = 3For I = 1 To 3For J = 1 To 3K = K + 1A(I,J)= K + 10Next JNext ICall Sub1(A,N)End SubPrivate Sub Sub1(A() As Integer, N As Integer)Dim I As Integer, J As Integer , T As Integer, K As IntegerK = N + 1For I = Int(N/2)To 1 Step 1For J = N I To I Step 1T = A(K J,I)A(K J, I )= A(I,J)A(I,J)= A(J, K-1)A(J,K 1)=A(K I, N + 1 J)A(K I,N + 1 J)=TNext JNext IEnd Sub11 12 13 14 15 1617 18 1911 16 1312 15 1817 14 1913 16 1912 15 1811 14 17答案:【12】19答案:【13】15答案:【14】146执行下面程序,窗体上显示的第二行是,单击命令按钮Cmd1,则窗体上显示的第四行是,第五行是,第六行是。Option ExplicitOption Base 1Private a(3, 3) As IntegerPrivate Sub Form_Activate()Dim i As Integer, j As Integer, k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论