第5章数组测试题一、选择题1.如下数组声明语句,()正确。A.Dima[3,4]AsIntegerB.Dima(3,4)AsIntegetC.Dima(n,n)AsIntegerD.Dima(34)AsInteger2.要分配存放如下矩阵的数据,()数组声明语句能实现(不能浪费空间)。9.98.87.76.65.54.43.32.21.1A.Dima(9)AsIntegerB.Dima(3,3)AsSingleC.Dima(-1to1,-5to-3)AsSingleD.Dima(-3to-1,5to7)AsInteger3.如下数组声明语句,则数组a包含元素的个数有()。Dima(3,-2to2,5)A.120B.75C.60D.134.以下程序的输出结果是()。Dimaa=Array(1,2,3,4,5,6,7)Fori=Lbound(a)toUbound(a)a(i)=a(i)*a(i)NextiPrinta(i)A.49B.0C.不确定D.程序出错5.下列语句中(假定变量n有值),能正确声明可调数组的是()。A.Dima()AsIntegerB.Dima()AsIntegerReDima(n)ReDima(n)AsIntegerC.Dima()AsIntergerD.Dima(10)AsIntegerReDima(3,4)ReDima(n+10)ReDimPreservea(4,4)6.在窗体的通用声明段自定义了数据类型Students,下列()定义方式是正确的。A.PrivateTypeStudentsB.TypeStudentsNameAsString*10NameAsString*10StudnoAsIntegerStudnoAsIntegerEndTypeEndStudentsC.TypeStudentsD.TypeStudentsNameString*10NameAsString*10StudnoIntegerStudnoAsIntegerEndTypeEndType7.以下程序的输出结果是()。OptionBase1PrivateSubCommand1_Click()Dima,b(3,3)a=Array(1,2,3,4,5,6,7,8,9)Fori=1To3Forj=1To3b(i,j)=a(i*j)If(j=i)ThenPrintTab(j*3);Format(b(i,j),###);NextjPrintNextiEndSubA.123B.1C.147D.12345645246467897893699二、填空题1.数组声明时下标下界默认为0,利用(1)语句可以使下标为1。2.由Array函数建立的数组,其变量必须是(2)类型。3.要获得数组的上界通过(3)函数,要获得列表框List数组的元素总个数通过(4)属性。4.若定义一维数组为:Dima(NtoM),则该数组的元素个数为(5)个。5.随机产生6位学生的分数(分数范围1-100),存放在数组a中,以每2分一个“*”显示,如图1所示。PrivateSubCommand1_Click()Fori=1To6a(i)=(6)Print(7)NextiEndSub6.在一维数组中利用移位的方法显示如图2所示结果。PrivateSubForm_Click()Dima(1To7)Fori=1To7a(i)=i:Printa(i);NextiPrintFori=1To7t=(8)'最右1位暂存Forj=6To1Step-1(9)'其余6个向右移一位Nextj图1随机分数运行界面图2第6题运行界面(10)'暂存的放入最左Forj=1To7Printa(j);NextjPrintNextiEndSub7.下面程序对已知数组a,删除数组元素中某个元素。PrivateSubCommand1_Click()Dima(),key%,i%,j%a=Array(1,6,8,3,5,9,10,2,7,4)key=Val(InputBox(输入要删除的值))Fori=0ToUBound(a)If(11)ThenForj=i+1ToUBound(a)(12)NextjReDim(13)MsgBox(删除完成)ExitSubEndIfNextiMsgBox(找不到要删除的元素)EndSub8.下列程序表示将输入的一个数插入到按递减的有序数列中,插入后使该序列仍然有序。PrivateSubForm_Click()Dima,i%,n%,m%a=Array(19,17,15,13,11,9,7,5,3,1)n=UBound(a)ReDim(14)m=Val(InputBox(输入欲插入的数))Fori=UBound(a)-1To0Step-1If(m=a(i))Then(15)Ifi=0Thena(i)=mElse(16)ExitForEndIfNextiFori=0ToUBound(a)Printa(i);NextiEndSub9.下列程序在1000-9999之间查找满足如下条件的整数:该整数,逆向得到的另一个4位数是它自身的倍数(2倍以上)。查找结果和逆向排列分别显示在对应的列表框,如图3所示。PrivateSubCommand1_Click()DimaAsIntegerDimmAsIntegerDimiAsIntegerFori=1000To9999m=0(17)DoWhilen0m=(18)+nMod10n=n\10LoopIf(19)Andm\i1ThenList1.AddItemiList2.AddItem(20)EndIfNextiEndSub10.下列程序完成如下功能:随机产生n(10-30)个大写字母,并显示。将这n个字母按产生的顺序逆时针排列成一个圆环,按逆时针方向统计相邻两个字母满足升序的次数(如图4所示)。并输出符合条件的每对字符和统计结果。PrivateSubForm_Click()Dima()AsString,countAsInteger,iAsInteger,nAsIntegerRandomizeForm1.Clsn=Int(Rnd*20)+10(21)图3第9题运行界面图4第10题的示意图和运行界面WPJKWPYNIWGGEJClsPrint产生的字符:Fori=1Tons=(22)'产生大写字母a(i)=sPrints;;NextiPrintPrint统计结果:count=0Fori=2TonIf(23)Thencount=count+1PrintSpace(3);a(i-1);;a(i)EndIfNextiIf(24)Thencount=count+1PrintSpace(3);a(n);;a(1)EndIfPrintPrint符合条件的字符有:;(25)EndSub11.本程序随机产生n(15)个A~J的大写字母,按字母降序排序后,将连续出现的字母用压缩形式显示。例如,连续5个H字母显示为5*H,如图5所示。数组a()用于存放随机产生的字母。PrivateSubForm_Click()ConstN=15Dima(1ToN)AsString*1,cDimcount%,i%,j%,k%RandomizeFori=1ToNa(i)=Chr(Int((26)))Printa(i);NextiPrintFori=1ToN-1'选择法排序k=iForj=(27)Ifa(j)a(k)Then(28)Nextjc=a(i):a(i)=a(k):a(k)=cNexti图5第11题的运行界面Fori=1ToN'输出排序结果Printa(i);;NextiPrinti=1DoWhilei=Ncount=1IfiNThenj=i+1DoWhilea(i)=a(j)count=(29)IfjNThenj=j+1ElseExitDoLoopIfcount=1ThenPrinta(i);;ElsePrintcount;*;a(i);;i=(30)LoopEndSub