VB第5章数组和自定义类型复习进程.doc
Good is good, but better carries it.精益求精,善益求善。VB第5章数组和自定义类型-第5章数组和用户自定义类型一.例题与解析(1)在窗体上画一个名称为Command1的命令按钮,然后编写如下代码:OptionBase1PrivateSubCommand1_Click()d=0:c=10x=Array(10,12,21,32,24)Fori=1To5Ifx(i)>cThend=d+x(i)c=x(i)Elsed=d-cEndIfNextiPrintdEndSub程序运行后,单击命令按钮,则窗体上的输出结果为。A)89B)99C)23D)77【答案】C【解析】语句OptionBase1使得数组的下标从1开始,因此,语句x=Array(10,12,21,32,24)使得数组x各元素的值分别为:x(1)=10,x(2)=12,x(3)=21,x(4)=32,x(5)=24。当i为1时,x(i)>c的值为假,执行语句d=d-c,使得d的值为-10;i为2时,x(i)>c的值为真,执行语句d=d+x(i)和c=x(i),使得d和c的值分别为2和12;i为3时,x(i)>c的值为真,执行语句d=d+x(i)和c=x(i),使得d和c的值分别为23和21;i为4时,x(i)>c的值为真,执行语句d=d+x(i)和c=x(i),使得d和c的值分别为55和32;i为5时,x(i)>c的值为假,执行语句d=d-c,使得d的值为55-32=23。(2)在窗体画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()Dimarray1(10,10)AsIntegerDimi,jAsIntegerFori=1To3Forj=2To4array1(i,j)=i+jNextjNextiText1.Text=array1(2,3)+array1(3,4)EndSub程序运行后,单击命令按钮,在文本框中显示的值是。A)12B)13C)14D)15【答案】A【解析】根据程序,i=1时,j的值分别为2、3、4,则array(1,2)=3,array(1,3)=4,array(1,4)=5;i=2时,j的值分别为2、3、4,则array(2,2)=4,array(2,3)=5,array(2,4)=6;i=3时,j的值分别为2、3、4,则array(3,2)=5,array(3,3)=6,array(3,4)=7。因此文本框内显示的值应该为12。(3)设有如下程序:PrivateSubCommand1_Click()DimaDimiAsIntegera=Array(1,2,3,4,5,6,7,8,9)Fori=0To3Printa(5-i);NextEndSub程序运行后,单击命令按钮,则在窗体上显示的是。A)4321B)5432C)6543D)7654【答案】C【解析】数组a初始化后,数组各元素的值分别是:a(0)=1,a(1)=2,a(2)=3,a(3)=4,a(4)=5,a(5)=6,a(6)=7,a(7)=8,a(8)=9。For循环内的Print语句在同一行输出元素a(5)、a(4)、a(3)、a(2)的值,即6、5、4、3。(4)用下面语句定义的数组的元素个数是。DimA(-3To5)AsIntegerA)6B)7C)8D)9【答案】D【解析】在声明数组的同时指定数组下标下界(如本例的-3)和下标上界(如本例的5),则数组A的元素分别是A(-3)、A(-2)、A(-1)、A(0)、A(1)、A(2)、A(3)、A(4)、A(5),共9个元素。(5)设有如下数组声明语句,则下列对数组元素的引用中错误的是。DimA(5)A)A(0)=1.57B)A(6)=12C)A(5)="qaz"D)A(1)=True【答案】B【解析】在声明数组时,没有指定数组下标下界,系统默认的下界值是0,则数组A的元素应该是A(0)、A(1)、A(2)、A(3)、A(4)、A(5)。使用A(6)会产生数组下标越界的错误。另外,在本题中声明数组A时省略了数据类型,则系统默认为Variant类型,即数组的每个元素可以存放不同类型的数据。(6)运行下列程序,单击窗体,则运行结果是。OptionBase1PrivateSubForm_Click()Dima(10)Fori=1To10a(i)=10-i+iMod2NextiFori=10To1Step-2Printa(i);NextiEndSubA)02468B)86420C)13579D)97531【答案】A【解析】本题要注意两点:第一个For语句的循环体有一条a(i)=10-i+iMod2语句,完成数组元素的生成;另外,第二个For语句的参数是10To1Step-2,逆向间隔输出。计算数组元素中Mod运算符优先,当i是奇数时,iMod2的值为1,当i是偶数时,iMod2的值为0,10-i在循环中得到987,6,5,4,3,2,1,0,当i是奇数时加1,因此a数组中的数是10,8,8,6,6,4,4,2,2,0,最后逆向间隔输出,输出的结果是0,2,4,6,8。(7)运行下列程序,单击窗体,则运行结果是。OptionBase1PrivateSubForm_Click()Dimaa=Array(1,5,"abcde")Fori=1To3Printa(i);NextiEndSubA)15abcdeB)15"abcde"C)出错信息D)15abcde【答案】A【解析】a是变体变量,使用Array函数进行数组初始化时,数组的各个元素类型可以不同;并且字符串输出是不带定界符(一对西文双引号)。(2)设窗体上有一个列表框控件List1,且其中含有若干列表项。则以下能表示当前被选中的列表项内容的是。A)List1.ListB)List1.ListIndexC)List1.IndexD)List1.Text【答案】D【解析】列表框的Text属性的值是最后一次选中的列表项的文本;ListIndex属性的值是最后一次选中的列表项的Index值;List属性和Index属性均为数组。因而本题的正确答案是选项D。(3)为了清除列表框中的所有内容,应使用的方法是。A)ClsB)ClearC)RemoveD)RemoveItem【答案】B【解析】Cls和Remove不是列表框的方法;Clear方法用来删除列表框中的所有项目;RemoveItem方法从列表框删除指定项目。(15)设置组合框的样式,可用的属性是。A)BackStyleB)BorderStyleC)StyleD)Sorted【答案】C【解析】组合框没有BackStyle和BorderStyle属性。组合框的Sorted属性控制列表项是否按序排列,若设置为True按升序排列,否则按加入先后顺序排列。组合框的Style属性控制组合框的样式,0为下拉式组合框,1为简单组合框,2为下拉式列表(只能选择不能输入)。二练习题1单项选择题(1)下面程序运行后,单击窗体,窗体输出为。OptionBase1PrivateSubForm_Click()x=Array(10,25,15,20,25,25,50,40,50,60)p=x(1)Fori=2To10Ifx(i)>pThenp=x(i)s=s+pEndIfNextiPrintp;sEndSubA)1010B)6070C)60135D)1065(2)在窗体上放一个命令按钮,并编写如下程序,运行后单击命令按钮,则输出结果是。PrivateSubCommand1_Click()DimAA=Array(1,2,3,4)S=0ForI=1To2S=S+A(I)PrintS;NextIEndSubA)25B)13C)5D)4(3)在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:PrivateSubCommand1_Click()Dimi,jAsIntegerDima(10,10)AsIntegerFori=1To3Forj=1To3a(i,j)=(i-1)*3+jPrinta(i,j);NextjPrintNextiEndSub程序运行后,单击命令按钮,窗体上显示的是。A)123B)234C)147D)123246345258456369456369789(4)设有如下程序PrivateSubForm_Click()Dimabc()AsIntegern1=Int(10*Rnd()n2=Int(10*Rnd()+50)ReDimabc(n1Ton2)PrintLBound(abc);UBound(abc)EndSub运行程序后,多次单击窗体,则输出结果范围最大的两个数是A)1060B)1059C)059D)060(5)下面四个选项中,正确的用户定义类型是。A)DecabcB)DecabcxmAsStringxmAsString*4nlAsIntegernlAsIntegerxbAsBooleanxbAsBooleanEndDecEndDecC)TypeabcD)TypeabcxmAsStringxmAsString*4nlAsIntegernlAsIntegerxbAsBooleanxbAsBooleanEndTypeEndType(6)设有如下程序OptionBase1PrivateSubForm_Click()a=Array("张","刘","郝","陈","王")w=a(1)Fori=1To4a(i)=a(i+1)Nextia(5)=wFori=5To1Step-1Printa(i);NextiEndSub运行程序后,输出结果是。A)张王陈郝刘B)王陈郝刘张C)张刘郝陈王D)刘郝陈王张(7)有如下程序OptionBase1Dima()AsIntegerPrivateSubCommand1_Click()n=Val(InputBox("请输入数组的下界:")ReDima(n)s=0Forj=1Tona(j)=2*js=s+a(j)Nextjav=s/nForj=1TonIfa(j)>avThenlag=lag+1Elsesma=sma+1EndIfNextjPrintn;"个数的平均值是"av;Print"大于平均值的个数是"lag;"小于平均值的个数是"smaEndSub运行程序后,当用户在输入对话框中输入3,按“确定”按钮后,输出结果是A)3个数的平均值是4大于平均值的个数是1小于平均值的个数是2B)3个数的平均值是5大于平均值的个数是1小于平均值的个数是2C)3个数的平均值是4大于平均值的个数是2小于平均值的个数是1D)3个数的平均值是5大于平均值的个数是2小于平均值的个数是1(8)有如下程序PrivateSubForm_Click()DimA(10)AsIntegerForJ=6To10A(J)=InputBox("请按顺序输入1,2,3,4,5")NextJPrintA(0)+A(A(6)/A(10)EndSub运行时顺序输入1,2,3,4,5,输出的结果是A)0.2B)1.6C)0D)出错信息(9)在窗体上有一个命令按钮,然后编写如下事件过程。PrivateSubCommand1_Click()Dima(5)AsStringFORi=1To5a(i)=Chr(Asc("A")+(i-1)NextForEachbInaPrintb;NextEndSub程序运行后,单击命令按钮,输出结果是A)ABCDEB)12345C)abcdeD)出错信息(10)窗体上有一个名为List1的列表框,运行程序后,若单击窗体,在列表框中顺序添加"天津","北京","上海","南京","广州","深圳"列表项,下面四组程序中,不能完成任务的是。A)OptionBase1PrivateSubForm_Click()a=Array("天津","北京","上海","南京","广州","深圳")Fori=1To6List1.AddItema(i)NextiEndSubB)OptionBase1PrivateSubForm_Click()a=Array("天津","北京","上海","南京","广州","深圳")Fori=6To1Step-1List1.AddItema(7-i)NextiEndSubC)OptionBase1PrivateSubForm_Click()a=Array("天津","北京","上海","南京","广州","深圳")Fori=6To1Step-1List1(i)=a(i)NextiEndSubD)PrivateSubForm_Click()List1.AddItem"天津"List1.AddItem"北京"List1.AddItem"上海"List1.AddItem"南京"List1.AddItem"广州"List1.AddItem"深圳"EndSub(11)下列程序运行时输出的结果是OptionBase1PrivateSubForm_Click()Dimx(10)AsInteger,y(5)AsIntegerFori=1to10x(i)=10-i+1NextFori=1to5y(i)=x(2*i-1)+x(2*i)NextFori=1to5Printy(i);NextEndSubA)37114519B)19151173C)13579D)不确定的值(12)阅读程序:OptionBase1Dimarr()AsIntegerPrivateSubForm_Click()DimiAsInteger,jAsIntegerReDimarr(3,2)Fori=1To3Forj=1To2arr(i,j)=i*2+jNextNextReDimPreservearr(3,4)Forj=3To4arr(3,j)=j+9NextPrintarr(3,2)+arr(3,4)EndSub程序运行后,单击窗体,输出结果为A)21B)13C)8D)25(13)以下语句中可以选择指定的列表项或取消已选择的列表项的是。A)列表框.Selected(索引值)B)列表框.Selected(索引值)=True|FalseC)列表框.SelectedD)列表框.Selected=True|False(14)下列语句中,获得列表框List1中列表项个数的语句是。A)x=List1.ListCountB)x=ListCountC)x=List1.ListIndexD)x=ListIndex一、单项选择题答案1. C2. A3. D4. C5. D6. A7. A8. C9. A10. C11. B12. A13. B14. A15. C16. C17. C18. C19. A20. A21. B22. B23. C24. D25. B26. B27. B28. D二、填空题答案1. Type2. 23. 空1:fn*k*(k+1)或fn*(i*2)*(i*2+1)空2:-fx*x24. 空1:9空2:jmod3=05. list1.text6. ItemAItemCItemE7. rnd*1008. 空1:rnd*99+1空2:a(i)mod5=0(15)为了在列表框中使用Ctrl和Shift键进行多个列表项的选择,应将列表框的Multiselect属性设置为A)0B)1C)2D)3(16)能够存放组合框的所有项目内容的属性是A)CaptionB)TextC)ListD)Selected(17)在列表框中当前被选中的列表项的序号是由属性返回的。A)ColumnsB)ListC)ListIndexD)ListCount(18)列表框的AddItem方法的作用是。A)清除列表框中的全部内容B)重新设置列表框控件外观C)向列表框添加项目D)显示列表框中的列表项目数(19)从列表框中删除一个项目使用方法。A)RemoveItemB)AddItemC)ClearD)Move(20)组合框可以看成是和文本框的组合。A)列表框B)命令按钮C)复选框D)单选按钮(21)在窗体上画一个列表框和一个命令按钮,其名称分别为List1和Command1,然后编写如下事件过程。PrivateSubForm_load()List1.AddItem"Itern1"List1.AddItem"Itern2"List1.AddItem"Itern3"EndSubPrivateSubCommand1_Click()List1.List(List1.Listcount)="AAAA"EndSub程序运行后,单击命令按钮,其结果为A)把字符串"AAAA"添加到列表框中,但位置不能确定B)把字符串"AAAA"添加到列表框的最后(即"Item3"的后面)C)把列表框中原有的最后一项改为"AAAA"D)把字符串"AAAA"插入到列表框的最前面(即"Item1"的前面)(22)在窗体上添加一命令按钮,其名为Command1,然后编写代码如下。privateSubCommand1_Click()Dimarr(5)AsInteger,arr1(5)AsIntegern=3Fori=1To5arr(i)=iarr1(n)=2*n+iNextPrintarr1(n);arr(n)EndSub程序运行后,单击命令按钮其结果为A)311B)113C)133D)313(23)设置组合框的风格,可用的属性是A)BackstyleB)BorderstyleC)StyleD)Sorted(24)设有数组定义语句:Dima(5)AsInteger,List1为列表框控件。下列给数组元素赋值的语句错误的是A)a(3)=3B)a(3)=InputBox("inputdata")C)a(3)=List1.ListIndexD)a=Array(1,2,3,4,5,6)(25)在窗体上添加一命令按钮,名称为Command1,然后为该命令按钮编写如下事件过程,程序运行后,单击命令按钮,其结果为OptionBase1PrivateSubCommand1_Click()DimaAsVarianta=Array(1,2,3,4)j=1Fori=4To1Step-1s=s+a(i)*jj=j*10NextPrintsEndSubA)4321B)1234C)34D)12(26)下面程序运行后,输出的结果是Dimarr(3,3)Forj=1To3Fork=1To3Arr(j,k)=(j-1)*3+kNextkNextjForj=2To3Fork=2To3Printarr(k,j);NextkPrintNextjA)25B)58C)47D)5936695868(27)程序运行后,单击命令按钮,在窗体上显示的内容是OptionBase0PrivateSubCommand3_Click()Dimdd=Array("a","b","c","d")Printd(1);d(3)EndSubA)abB)bdC)acD)出错(28)窗体上有一个名称为Text1的文本框,一个名称为Command1的命令按钮。编写如下的代码:PrivateTypexaAsIntegerbAsIntegerEndTypePrivateSubCommand1_ClickDimyAsxy.a=inputBox("")Ify.a2=y.a/2Theny.b=y.a*y.aElsey.b=Fix(y.a/2)EndIfText1.Text=y.bEndSub对以上程序,下列叙述中错误的是A)x是用户定义的类型B)InputBox函数弹出的对话框中没有提示信息C)若输入的是偶数,y.b的值为该偶数的平方D)Fix(y.a/2)把y.a/2的小数部分四舍五入,转换为整数返回2填空题(1)用户可以用语句定义自己的数据类型。(2)组合框的Style属性决定了它的3种不同类型,其中使得组合框只能选择而不能输入数据的Style值为。(3)下列程序的功能是求sin(0.3125)的值。由台劳级数可知:sinx=x-x3/3!+x5/5!-x7/7!+用有限步取代sinx的无限步计算,请填空。(注意:不得增行或删行,也不得更改程序的结构!)PrivateSubForm_Click()k=2:n=80x=0.3125sin1=0fn=1:fx=xFori=1Tonsin1=sin1+fx/fnfn=fx=k=k+2NextiPrintsin1EndSub(4)下列程序的功能是:计算并输出100以内的所有能被3整除且个位数是6的所有整数,请填空。(注意:不得增行或删行,也不得更改程序的结构!)PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=0Toj=i*10+6IfThenPrintjEndIfNextiEndSub(5)在窗体上有一个名称为Label1的标签和一个名称List1的列表框。程序运行后,在列表框中添加若干列表项。当双击列表框中的某个项目时,在标签Label1中显示所选中的项目,如图所示。请在空白处填入适当的内容,将程序补充完整。PrivateSubForm_load()List1.AddItem"北京"List1.AddItem"上海"List1.AddItem"河北"EndSubPrivateSubList1_DblClick()Label1.Caption=EndSub(6)在窗体上有一个列表框,然后编写如下两个事件过程:PrivateSubForm_Click()List1.RemoveItem1List1.RemoveItem2List1.RemoveItem3EndSubPrivateSubForm_Load()List1.AddItem"ItemA"List1.AddItem"ItemB"List1.AddItem"ItemC"List1.AddItem"ItemD"List1.AddItem"ItemE"List1.AddItem"ItemF"EndSub运行上面的程序,然后单击窗体,列表框中显示的项目是。(7)下列程序功能是,产生10个0100的随机数,输出其中的最大值。请将程序补充完整。PrivateSubForm_Click()Diman(10)AsIntegerDimmaxAsIntegerRandomizeFori=1To10an(i)=Nextimax=an(1)Fori=2to10ifan(i)>maxthenmax=an(i)EndIfNextPrintmaxEndSub(8)下面程序的功能是产生10个小于100(不含100)的随机正整数,并统计其中能被5整除的数所占比例,但程序不完整,请补充完整。PrivateSubForm_Click()RandomizeDima(10)Fori=1To10a(i)=Int()IfThenk=k+1Printa(i)NextiPrintPrintk/10EndSub-