您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > vb大一程序设计第八章习题答案1
第八章1.Sub过程与Function过程的主要区别是BA.Sub过程可以通过Call语句调用,而Function过程不可以B.Sub过程不能通过过程名返回值,而Function过程可以C.Sub过程与Function过程的参数传递方式不一样D.Function过程只能返回1个值,而Sub过程可以返回多个值2.以下叙述中错误的是C.。A.在Sub过程中可以调用Function过程B.可以在程序的任何地方调用以Public声明的过程C.在Sub过程中可以嵌套定义Function过程D.用Static声明的过程中的局部变量都是Stati变量3.以下关于函数过程的叙述中,正确的是A。A.函数过程虚参的类型与函数返回值的类型没有关系B.在函数过程中,过程的返回值可以有多个C.当数组作为函数过程的参数时,既能以按值方式传递,也能以按址方式传递D.若不指明函数过程参数的类型,则该参数没有数据类型4.以下叙述中错误的是B。在VB应用程序中,A.过程的定义不可以嵌套,但过程的调用可以嵌套B.过程的定义可以嵌套,但过程的调用不能嵌套C.程序设计人员不能任意指定事件过程的名称D.在Function过程中可以Sub过程5.下列描述中正确的是(A)(A)VB只能通过调用Sub过程(B)Sub过程可以嵌套定义也可以嵌套调(C)可以在Sub过程中定义1个Function过程,但不能定义Sub过程(D)Sub过程和Function过程都必须带返回值6.下列叙述中正确的是((B))(A)一个Sub过程至少要有一个ExitSub语句(B)一个Sub过程必须有一个EndSub语句(C)可以在Sub过程中定义一个Function过程,但不能定义Sub过程(D)调用一个Function过程可以获得多个返回值7.以下语句用来定义过程subP,其中正确的是D。A.DimSubsubP(x,y)B.PublicsubP(x,y)C.PrivateSubsubP(x,y)AsIntegerD.SubsubP(x,y)8.在窗体上放置2个标签和一个命令按钮,其名称分别为Label1.、Label2、command1PrivateSubCommand1_Click()a=Val(Label2.Caption)Callfunc(Label1,a)Label2.Caption=aEndSubPrivateSubForm_Load()Label1.Caption=ABCDELabel2.Caption=10EndSubPrivateSubfunc(LAsLabel,ByValXAsInteger)L.Caption=1234a=a*aEndSub程序运行后,单击命令按钮在2个标签中显示的内容分别是1234109.OptionBase1Subsubp(b()AsInteger)Fori=1To3b(i)=3*iNextiEndSubPrivateSubCommand1_Click()Dima(3)AsIntegerarr=Array(8,4,3)Fori=1To3a(i)=arr(i)Nextisubpa()Fori=1To3Printa(i)NextiEndSub运行程序后,在窗体上输出的内容为(A)A)369B)843C)963D)34810.Functionfunc(aAsInteger,bAsInteger)AsIntegerStaticxAsInteger,yAsIntegerx=0:y=2y=y+x+1:x=y+a+bfunc=xEndFunctionPrivateSubCommand1_Click()StatickAsInteger,mAsIntegerDimpAsIntegerk=5:m=2p=func(k,m)Printpp=func(k,m)PrintpEndSub输出结果是101011.Subs1(ByValxAsInteger,ByValyAsInteger)DimtAsIntegert=x:x=y:y=tEndSubPrivateSubCommand1_Click()DimaAsInteger,bAsIntegera=10:b=30s1a,bPrinta=;a;b=;bEndSub运行程序后,在窗体上输出的内容为(C)A)a=30b=10B)a=30b=30C)a=10b=30D)a=10b=1012.Subs(xAsSingle,yAsSingle)t=x:x=t/y:y=tModyEndSubPrivateSubCommand1_Click()DimaAsSingle,bAsSinglea=5:b=4sa,bPrinta;bEndSub输出结果1.25113.Functionsubl(aAsInteger,ByValbAsInteger)AsIntegera=Val(b)subl=aPrintsublEndFunctionPrivateSubCommand1_Click()Callsubl(-15.1,2.54)EndSub运行程序后,在窗体上输出的内容为(A)A)3B)2C)-15D)提示错误运行结果314.假定有以下两个过程:SubS1(ByValxAsInteger,ByValyAsInteger)DimtAsIntegert=x:x=y:y=tEndSubSubS2(xAsInteger,yAsInteger)DimtAsIntegert=x:x=y:y=tEndSub则以下说法中正确的是(B)A.用过程S1可以实现交换两个变量值的操作,S2不能实现B.用过程S2可以实现交换两个变量值的操作,S1不能实现C.用过程S1和S2都可以实现交换两个变量值的操作D.用过程S1和S2都不能实现交换两个变量值的操作15.下列关于过程及过程参数的描述中,错误的是(C)A.过程的参数可以是控件名称B.用数组作为过程的参数时,使用的是“传地址”方式C.只有函数过程能够将过程中处理的信息传回调用的程序中D.窗体可以作为过程的参数16.以下说法正确的是(D)A)事件过程也是过程,与通用过程完全一样B)事件过程是程序员编写的各种子过程C)事件过程通常放在标准模块中D)事件过程是用来处理由用户操作或系统激发的事件的代码17.执行“工程”菜单中的(D)命令可以添加一个标准模块。A)添加过程B)通用过程C)添加窗体D)添加模块18.通用过程可以通过执行“工具”菜单中的(A)命令来建立。A)添加过程B)通用过程C)添加窗体D)添加模块二填空题1.Functionfun(sAsInteger)Fori=1TosSum=Sum+iNextifun=SumEndFunctionPrivateSubForm_Click()Text1.Text=Str(fun(10))EndSubPrivateSubtext1_change()Label1.Caption=vbprogrammingEndSub文本框中显示55,而标签框中显示vbprogramming2.阅读程序Functionfun(xAsLong)AsIntegerIfxMod2=0Thenfun=True(1)Elsefun=iffun=False(2)EndIfEndFunctionPrivateSubCommand1_Click()DimnumAsLongnum=Val(Text1.Text)p=IIf(fun(num),奇数,偶数)(3)PrintStr(num)&是1个“&p;EndSub3.在命令按钮事件过程中定义1个数组,将这个数组作为参数转送到通用过程FindMax,并返回该数组的最大值OptionBase1Dimarr2()AsIntegerPrivateFunctionfindmax(a()AsInteger)AsIntegerDimstartAsInteger,finishAsInteger,iAsIntegerstart=LBound(a)finish=UBound(a)Max=a(Start)Fori=start+1TofinishIfa(i)MaxThenMax=a(i)Nextifindmax=MaxEndFunctionPrivateSubCommand1_Click()Dimarr1arr1=Array(12,435,76,24,78,54,866,43)b=UBound(arr1)ReDimarr2(8)AsIntegerFori=1Tobarr2(i)=CInt(arr1(i))Nextim=findmax(arr2)Print最大值:;mEndSub命令按钮的单击事件过程中定义1个数组,把这个数组作为参数传送到通用过程FindMax,并返回该数组的最大值PrivateSubCommand1_Click()Dima(1to10)AsInteger,IAsInteger,ResultAsIntegerForI=1to10a(i)=inputbox(“enternumplease”)NextIResult=FindMax(a)Print“数组a中的最大值为:”;resultEndSubPrivateFunctionFindMax(b()AsInteger)Dims1asInteger,s2ASInteger,maxAsIntegerS1=Lbound(b)S2=Ubound(b)max=b(s1)ForI=s1tos2Ifmaxb(i)thenMax=b(i)EndifNextIFindMax=maxEndFunction三.程序设计1用递归过程计算两个整数的最大公约数PrivateSubCommand1_Click()DimmAsLong,nAsLongm=Val(Text1.Text)n=Val(Text2.Text)Label3.Caption=m&与&n&最大公约数是IfmnThent=m:m=n:n=tEndIfLabel3.Caption=Label3.Caption&gcd(m,n)EndSubPrivateFunctiongcd(aAsLong,bAsLong)AsLongIfaModb=0Thengcd=bElsegcd=gcd(b,aModb)EndIfEndFunction2.求S=A!+B!+C!PrivateSubCommand1_Click()DimS1AsLong,S2AsLong,S3AsLongS1=Val(InputBox(请输入第1数:,,4))S2=Val(InputBox(请输入第2数:,,5))S3=Val(InputBox(请输入第3数:,,6))MsgBoxS1&!+&S2&!+&S3&!=&JC(S1)+JC(S2)+JC(S3)EndSubPrivateFunctionJC(ByValSAsDouble)AsDoubleIfS=1ThenJC=1:ExitFunctionJC=S*JC(S-1)EndFunction另外一种方法PrivateSubCommand1_Click()DimS1AsLong,S2AsLong,S3AsLongDimJAsDouble,SAsDouble,IAsDoubleS1=Val(InputBox(请输入第1数:,,4))S2=Val(InputBox(请输入第2数:,,5))S3=Val(InputBox(请输入第3数:,,6))J=1ForI=1ToS1J=J*INextS=S+JJ=1ForI=1ToS2J=J*INextS=S+JJ=1ForI=1ToS3J=J*INextS=S+JMsgBoxS1&!+&S2&!+&S3&!=&SEndSub3.打印裴波纳契数列。裴波纳契数列具有以下特点:它的第一个数为0,第二个数为1,第三个数以后的数是前两个数的和。OptionBase1PrivateSubForm_Click()DimnAsInteger,mAsInteger,kAsInteger,f()AsLongm=InputBox(请输入要打印的数列项数,输入项数,10)ReDimf(m)f
本文标题:vb大一程序设计第八章习题答案1
链接地址:https://www.777doc.com/doc-2854032 .html