第1页(共5页)2004/2005年第二学期计算机程序设计(VB)期末考试(A)卷考生注意:所有回答写在答题卡或答题页上。考毕只交答题卡和答题页,请保管题卷以备讲评用。一、判断题(共10分,每题1分,在答题卡上回答,A表示正确,B表示错误)1.窗体中只能有一个命令按钮设置Default属性为True,在任何情况下,按Enter键,就相当于执行该命令按钮的Click()事件。2.直线控件没有Left和Top属性。3.在VB工具箱中双击控件图标,可以在窗体中添加控件,但不能直接将控件引入到框架中。4.Style属性为0和2的组合框由于下拉,故不能多选,但Style属性为1的组合框不是下拉的,所以可以多选。5.单选按钮和复选框都没有双击事件。6.Cls方法能清除窗体中用Line和Circle方法画的直线、矩形和圆形,但不能清除窗体中用直线控件和形状控件产生的直线、矩形和圆形。7.“打开”对话框和“另存为”对话框,除了默认的标题栏文字不同之外,其他内容与用法均相同,因此,也可以用“另存为”对话框来指定要打开的文件。8.当图片框的AutoSize属性为True,而影像框的Stretch属性为False时,两者显示图片的效果相同。9.Pset(X,Y)方法在(X,Y)处画一个点,而Point(X,Y)函数返回(X,Y)点的颜色值。10.若要用鼠标在文本框中右击能弹出mnuEdit的快捷菜单,只要在该文本框的Mouse_Down()事件中,添加一条PopupMenumnuEdit语句便可。二、单选题(共20分,每题2分)11.VB提供了许多目录和文件操作语句,其中删除文件夹语句的关键词是。[A]ChDir[B]RmDir[C]KillDir[D]DelDir12.标签的WordWrap=True可以固定标签宽度来显示多行文本,它必须和属性一起设置。[A]MultiLine[B]AutoSize[C]Alignment[D]Width13.表达式4+9\4*9/7Mod3的值是。[A]4[B]5[C]6[D]714.在默认的情况下,由Dimaxyz(3,2To4)AsString*2语句定义的数组占用______字节的内存空间。[A]24[B]18[C]9[D]4815.以下叙述中错误的是。[A]以.BAS为扩展名的文件是标准模块文件,是一个纯代码性质的文件[B]编程人员不能改变窗体或控件的事件名称,但是可以改变控件的名称[C]在VisualBasic工具箱中的所有控件都具有宽度(Width)和高度(Height)属性[D]用Hide方法只是隐藏一个窗体,不能从内存中清除该窗体16.要使得文件列表框File1中,只显示文件后缀名为bmp和jpg的图片文件,应设置其Pattern属性为______。[A]*.bmp|*.jpg[B]*.bmp,*.jpg[C]*.bmp;*.jpg[D]*.bmp,*.jpg17.执行以下代码后,窗体上打印出的结果是______。a=1:b=5:c=-1Printc=ba[A]True[B]False[C]-1[D]出错18.在文本框Text1中用鼠标拖动选中文本块时,如果Text1.SelStart=15,Text1.SelLength=10,那么Text1.SelText的属性值与______的函数值相同。[A]Mid(Text1,14,10)[B]Mid(Text1,15,10)[C]Mid(Text1,16,10)[D]Mid(Text1,10,15)第2页(共5页)19.当驱动器列表框Drive1中的驱动器符改变时,为使文件夹列表框Dir1中显示的路径也作相应的改变,应当在的Change事件中添加代码。[A]Drive1,Dir1.Path=Drive1.Drive[B]Dir1,Dir1.Path=Drive1.Drive[C]Drive1,Drive1.Drive=Dir1.Path[D]Dir1,Drive1.Drive=Dir1.Path20.Sub过程与Function过程最根本的区别是____。[A]前者可以使用Call或直接使用过程名调用,后者不可以[B]后者可以有参数,前者不可以[C]两种过程参数的传递方式不同[D]后者可通过函数名返回值,但前者不能通过过程名返回值三、程序填空选择题(共20分,每空2分)阅读下列程序说明和相应的程序,在每小题提供的若干可选答案中,挑选一个正确答案。1.单击命令按钮cmd2,由随机函数产生50个100—300之间(包括100和300)的随机整数。放入第一个数组中,将它们中的偶数放入另一个数组,再对偶数数组按从大到小的顺序进行排序,先后将这三组数值显示在窗体中。PrivateSubcmd2_Click()DimN%(50),M%(),I%,J%,T%,P%ClsPrint原始数组:ForI=1To50N(I)=___(21)___PrintN(I),IfIMod5=0ThenPrintIfN(I)Mod2=0ThenJ=J+1:ReDimPreserveM(J):M(J)=N(I)NextIPrint偶数数组:ForI=1ToJPrintM(I),IfIMod5=0ThenPrintNextIPrint:Print排序后的偶数数组:ForI=1ToJ-1P=IFor___(22)___If___(23)___ThenP=KNextKIfIPThen___(24)___PrintM(I),IfIMod5=0ThenPrintNextIPrintM(I)EndSub(21)[A]Int(100+Rnd()*201)[B]Int(200+Rnd()*101)[C]Int(101+Rnd()*199)[D]Int(100+Rnd()*200)(22)[A]K=I+1To50[B]J=I+1To50[C]J=I+1ToK[D]K=I+1ToJ(23)[A]M(I)M(K)[B]M(I)M(K)[C]M(P)M(K)[D]M(K)M(P)(24)[A]T=M(P):M(I)=M(P):M(I)=T[B]T=M(I):M(P)=M(I):M(P)=T[C]M(I)=T:T=M(P):M(P)=M(I)[D]T=M(I):M(I)=M(P):M(P)=T第3页(共5页)2.窗体上有一个列表框List1和一个文本框Text1,在属性窗口已设置文本框的MultiLine属性为True,ScrollBars属性为2-Verticle。程序启动或单击窗体后,随机生成20个二位正整数,作为列表项添加到列表框List1中,单击选择List1的一个列表项,求出选中的二位数的全部因子(包括1和该数本身),在文本框Text1中逐行显示。PrivateSubForm_Load()Randomize___(25)___EndSubPrivateSubForm_Click()DimIAsInteger___(26)___Text1=ForI=0To19List1.AddItemInt(Rnd*90+10)NextIEndSubPrivateSubList1_Click()DimIAsInteger,XAsIntegerX=Val(List1.Text)Text1=ForI=1ToXIfXModI=0ThenText1=___(27)___NextIEndSub(25)[A]CallForm1_Click[B]Form_Click()[C]Form1_Click[D]Form_Click(26)[A]List1.Clear[B]List1.Cls[C]List1=[D]List1.ListCount=0(27)[A]I&vbCrLf[B]Text1&I&vbCrLf[C]X&vbCrLf[D]Text1&X&vbCrLf3.下列FindStr过程是用于在一个字符串变量中查找red,并用输出对话框给出找到的个数或没有找到的查找结果。OptionExplicitPublicSubFindStr()DimStr1AsString,LengthAsInteger,SumAsInteger,IAsIntegerStr1=InputBox(请输入一个字符串)Length=___(28)___I=1Sum=0DoWhile___(29)___If___(30)___ThenSum=Sum+1I=I+1LoopIfSum=0ThenMsgBox没有找到!ElseMsgBox找到了&Str(Sum)&个EndIfEndSub(28)[A]Len(Str1)[B]Val(Str1)[C]Chr(Str1)[D]Str(Str1)(29)[A]I=Length-1[B]ILength-1[C]ILength-1[D]I=Length(30)[A]Left(Str1,3)=red[B]Str1=red[C]Mid(Text1,I,3)=Str1[D]Mid(Str1,I,3)=red第4页(共5页)四、程序阅读题(共20分,每题5分)1.请写出从键盘输入”12”,a5和“Ff”后,窗体的输出结果。PrivateSubForm_Click()DimsHexAsString,XAsString*1DimnDecAsLong,NAsInteger,IAsInteger,AiAsIntegersHex=UCase(InputBox(请输入一个字符串))N=Len(sHex)nDec=0DoWhileINX=Mid$(sHex,N-I,1)SelectCaseXCaseAToF:Ai=Asc(X)-Asc(A)+10Case0To9:Ai=Val(X)EndSelectnDec=nDec+Ai*16^II=I+1LoopPrintsHex;H=;nDecEndSub2.请写出以下程序运行后两次单击命令按钮的输出结果。DimxAsIntegerPrivateSubCommand1_Click()DimyAsIntegerStaticzAsIntegerx=x+1:y=y+1:z=z+1Callabc(x,y,z+y)Printx,y,zEndSubStaticSubabc(a,b,c)a=a+1:b=b+1:c=c+1:x=x+1EndSubPrivateSubForm_Load()x=1:y=1:z=1EndSub3.已知水平滚动条HScroll1的有关属性已经在属性窗口进行了如下的设置:Min为1Max为10SmallChange为1LargeChange为2Value为5写出连续3次单击水平滚动条HScroll1右端箭头后,窗体上显示的结果。PrivateSubHScroll1_Change()StaticyAsIntegerIfHScroll1.ValueMod2=0Theny=y+HScroll1.ValuePrinty=;yEndIfEndSub第5页(共5页)4.请写出在文本框中输入“小李”(2个汉字)并按下回车键后,窗体上显示的结果。PrivateSubText1_Change()PrintText1.Text;,你好!EndSub五、程序设计题(本题共30分,每题10分)注意:在所有程序设计题中,在窗体或模块的“通用-声明”位置都有“OptionExplicit”语句。1.试用Form_Click()事件过程计算下列求和式,在窗体显示结果。S=1+12+123+1234+12345+……+12345…n例如n=7,S=1+12+123+1234+12345+123456+1234567n通过输入框输入,其值为1—9;如果输入不在此范围,再次弹出输入框重输。2.编写一个绘制“饼图”的子程序BingTu()。调用时,传递3个实际参数X、Y、Z,子程序就在图片框Picture1中画出内切圆,按3个实参的比例分为3个扇形,并用三种不同的颜色(X-红,Y-绿,Z-黄)填充,如右图所示。下面是已经完成的“饼图”按钮Command1_Click()事件中调用子程序BingTu()的代码。