vb考试复习9章12章习题.docx
《vb考试复习9章12章习题.docx》由会员分享,可在线阅读,更多相关《vb考试复习9章12章习题.docx(30页珍藏版)》请在冰豆网上搜索。
vb考试复习9章12章习题
第9章过程
一、选择题
1.下面的过程定义语句中合法的是【】。
(A)SubProc1(ByValn())(B)SubProc1(n)AsInteger
(C)FunctionProcl(Proc1)(D)FunctionProc1(ByValn)
2.要想在过程调用后返回两个结果,下面的过程定义语句合法的是【】。
(A)SubProc1(ByValn,ByValm)(B)SubProc1(n,ByValm)
(C)SubProc1(n,m)(D)SubProc1(ByValn,m)
3.Sub过程与Function过程最根本的区别是【】。
(A)Sub过程可以使用Call语句或直接使用过程名调用,而Function过程不可以
(B)Function过程可以有参数,Sub过程不可以
(C)两种过程参数的传递方式不同
(D)Sub过程的过程名不能返回值,而Function过程能通过过程名返回值
4.在过程调用中,参数的传递可以分为【】和【】两种方式。
(A)按值传递(B)按地址传递(C)按参数传递(D)按位置传递
5.在参数传递过程中,使用关键字【】来修饰参数,可以使之按值传递。
(A)ByVal(B)BYRef(C)Value(D)Reference
6.通用过程可以通过执行"工具"菜单中的【】命令来建立。
(A)添加过程(B)通用过程(C)添加窗体(D)添加模块
7.执行"工程"菜单中的【】命令,可以添加一个标准模块。
(A)添加过程(B)通用过程(C)添加窗体(D)添加模块
8.假定已定义了一个过程SubAdd(aAsSingle,bAsSingle),则正确的调用语句是【】。
(多选)
(A)Add12,12(B)CallAdd(2*x,Sin(1.57))
(C)CallAddx,y(D)CallAdd(12,12,x)
9.在窗体模块的通用声明段中声明变量时,不能使用【】关键字。
(A)Dim(B)Public(C)Private(D)Static
10.使用PublicConst语句声明一个全局的符号常量时,该语句应放在【】。
(A)过程中(B)窗体模块的通用声明段
(C)标准模块的通用声明段(D)窗体模块或标准模块的通用声明段
11.可以在窗体模块的通用声明段中声明【】。
(A)全局变量(B)全局常量(C)全局数组(D)全局用户自定义类型
二、判断程序或程序段的执行结果
1.单击命令按钮时,下列程序代码的执行结果为【】。
PublicSubProc1(nAsInteger,ByValmAsInteger)
n=nModl0
m=m\1O
EndSub
PrivateSubCommand1_Click()
DimxAsInteger,yAsInteger
x=12:
y=34
CallProc1(x,y)
Printx;y
EndSub
(A)1234(B)234(C)23(D)123
2.单击一次命令按钮之后,下列程序代码的执行结果为【】。
如果去掉StaticSUM语句,则单击一次命令按钮的执行结果为【】。
PrivateSubCommand1_Click()
S=P
(1)+P
(2)+P(3)+P(4)
PrintS;
EndSub
PrivateFunctionP(NAsInteger)
StaticSUM
ForI=1ToN
SUM=SUM+I
NextI
P=SUM
EndFunction
(A)20(B)35(C)115(D)135
3.单击命令按钮时,下列程序代码的执行结果为【】。
PrivateFunctionFirProc(xAsInteger,yAsInteger,zAsInteger)
FirProc=2*x+y+3*z
EndFunction
PrivateFunctionSeeproc(xAsInteger,yAsInteger,zAsInteger)
Seeproc=FirProc(z,x,y)+X.
EndFunction
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger,CAsInteger
a=2:
b=3:
c=4
PrintSeeproc(c,b,a)
EndSub
(A)21(B)19(C)17(D)34
4.单击命令按钮时,下列程序代码的执行结果为【】。
PrivateSubCommand1_Click()
DimFirststrAsString
Firststr="abedef"
PrintPickMid(Firststr)
EndSub
PrivateFunctionPickMid(xStrAsString)AsString
DimtempStrAsString,strLenAsInteger
tempStr=""
strLen=Len(xStr)
i=1
DoWhilei<=strLen/2
tempStr=tempStr+Mid(xStr,i,1)+Mid(xStr,MIten-i+1,1)
i=i+1
Loop
pickMid=ternpStr
EndFunction
(A)abedef(B)afbecd(C)fedcba(D)defabc
5.单击窗体时,下列程序代码的执行结果为【】。
PrivateSubInvert(ByValxStrAsString,yStrAsString)
DimtempStrAsString
DimiAsInteger
i=Len(xStr)
DoWhilei>=1
tempStr=tempStr+Mid(xStr,i,1)
Loop
yStr=tempStr
EndSub
PrivateSubForm_Click()
Dims1AsString,s2AsString
s1="abedef"
Inverts1,s2
Prints2
EndSub
(A)abedef(B)afbecd(C)fedcba(D)defabc
6.人单击窗体时,下列程序代码的执行结果为【】。
PrivateSubValue(BvValmAsInteger,BvValnAsInteger)
m=m*2:
n=n-5
Printm;n
EndSub
PrivateSubForm_Click()
DimxAsInteger,yAsInteger
x=10:
y=15
CallValue(x,y)
Printx;y
EndSub
如果删去Value过程形参表中的ByVal关键字,那么单击窗体时,程序代码的执行结果为【】。
(A)1010(B)1015(C)2015(D)2010
1015201010152010
7.单击窗体时,下列程序代码的执行结果为【】。
PrivateSubFonm_Click()
DimxAsInteger,yAsInteger,zAsInteger
x=1:
y=2:
z=3
CallProc1(x,x,z)
CallProc1(x,y,y)
EndSub
PrivateSubProc1(xAsInteger,yAsInteger,zAsInteger)
x=3*z
y=2*z
z=x+y
Printx;y;z
EndSub
如果在Proc1过程的第二个形参y前加ByVal关键字,那么单击窗体时,程序代码的执行结果为【】。
(A)6612(B)9615(C)9615(D)91010
6101061010641091015
8.单击命令按钮时,下列程序代码的执行结果为【】。
PrivateSubCommand1_Click()
PrintMyFunc(24,18)
EndSub
PublicFunctionMyFunc(mAsInteger,nAsInteger)AsInteger
DoWhilem<>n
DoWhilem>n:
m=m–n:
Loop
DoWhilemn=n–m:
Loop
Loop
MyFunc=m
EndFuncuon
(A)2(B)4(C)6(D)8
9.单击一次命令按钮之后,下列程序代码的执行结果为【】
PublicSubProc(a()AsInteger)
StaticiAsInteger
Do
a(i)=a(i)+a(i+1)
i=i+1
LoopWhilei<2
EndSub
PrivateSubCommandl_Click()
DimmAsInteger,iAsInteger,x(10)ASInteger
Fori=0To4
x(i)=i+1
Nexti
Fori=1To2
Callproc(x())
Nexti
Fori=0To4
Printx(i);
Nexti
EndSub
(A)34756(B)35745(C)12345(D)12357
10.单击命令按钮时,下列程序代码的执行结果为【】
DimaAsInteger,bAsInteger,cAsInteger
PrivateSubCommand1_Click()
a=2:
b=4:
c=6
CallProc1(a,b)
Print"a=";a;"b=";b;"c=";c
CallProc2(a,b)
Print"a=";a;"b=";b;"c=";c
EndSub
PublicSubProc1(xAsInteger,yAsInteger)
DimCAsInteger
x=2*x:
y=y+2:
c=x+y
EndSub
PublicSubProc2(XAsInteger,ByvalyASInteger)
DimCAsInteger
x=2*x:
y=y+2:
c=x+y
EndSub
(A)a=2b=4c=6(B)a=4b=6c=10(C)a=4b=6c=6(D)a=4b=6c=14
a=4b=6c=1Oa=8b=8c=16a=8b=6c=6a=8b=8c=6
11.单击窗体时,下列程序代码的执行结果为【】。
PrivateSubForm_Click()
Test2
EndSub
PrivateSubTest(xAsInteger)
x=x*2+1
Ifx<6Then
callTest(x)
EndIf
x=x*2+1
Printx;
EndSub
(A)2347(B)511(C)1022(D)2323
12.给出下列程序代码在单击三次命令按钮时的输出结果。
去掉Static语句后,程序代码在单击三次命令按钮时的输出结果【】。
SubMySub()
StaticS
ForI=lTo10Step2
S=S+I
NextI
PrintS;
EndSub
PrivateSubCommand1_Click()
CallMySub
EndSub
13.给出下列程序代码在单击命令按钮时的输出结果【】。
SubSS(ByValX,BYRefY,Z)
X=X+1
Y=Y+1
Z=Z+1
EndSub
PrivateSubCommand1_Click()
A=1:
B=2:
C=3
CallSS(A,B,C)
PrintA,B,C
EndSub
14.给出下列程序代码在单击三次命令按钮时的输出结果【】。
Dimx,y,z
SubSS()
x=x+1
y=y+1
z=z+1
Printx,y,z
EndSub
PrivateSubCommand1_Click()
Dimx,y,z
x=1:
y=2:
z=3
CallSS
Printx,y,z
EndSub
15.给出下列程序代码在单击窗体时的输出结果【】。
PrivateSubForm_click()
Dima(3,3)AsInteger,iAsInteger,jAsInteger,kAsInteger
k=1;
Fori=1To3
Forj=1To3
a(i,j)=k
k=k+1
Nextj
Nexti
Fori=1To3
Callchange(a(),i)
Nexti
Fori=1To3
Forj=1To3
Printa(i,j);
Nextj
Print
Nexti
EndSub
PrivateSubchange(a()AsInteger,iAsInteger)
c=a(i,UBound(a))
Fork=UBound(a)-1To1Step-1
a(i,k+1)=a(i,k)
Nextk
a(i,1)=c
EndSub
16.给出下列程序代码在第一次单击命令按钮时文本框Text1和Text2中的内容,第二次单击命令按钮时文本框Text1和Text2中的内容【】。
DimyAsInteger
PrivateSubCommand1_Click()
DimxAsInteger
x=2
Text1.Text=SecondFunc(FirstFunc(x),y)
Text2.Text=FirstFunc(x)
EndSub
PrivateFunctionFirstFunc(XAsInteger)AsInteger
x=x+y:
y=x+y
FirstFunc=x+y
EndFunction
PrivateFunctionSecondFunc(XAsInteger,yAsInteger)AsInteger
secondFunc=2*x+y
EndFunction
17.给出下列程序代码在单击命令按钮时的输出结果【】。
PrivateSubCommand1_Click()
DimxAsInteger,yAsInteger
DimnAsInteger,zAsInteger
x=1:
y=1
Forn=1To3
z=FirstFunc(x,y)
Printn,z
Nextn
EndSub
PrivateFunctionFirstFunc(XAsInteger,yAsInteger)AsInteger
DimnAsInteger
DoWhilen<=4
x=x+y
n=n+1
Loop
FirstFunc=x
EndFunction
三、程序填空
1.以下Function过程Odd用于判断一个数是否是奇数。
当单击命令按钮时,随机产生一个二位数,调用Odd过程,判断该数是否是奇数。
如果是奇数,则显示True,否则显示False。
PrivateSubCommand1_Click()
DimxAsInteger
x=
(1)
Printx,Odd(x)
EndSub
FunctionOdd(ByValnAsInteger)AsBoolean
If
(2)Then
Odd=False
Else
Odd=True
EndIf
EndFunction
供选择的答案:
(1)(A)Int(Rnd*90+10)(B)Int(Rnd*89+10)(C)InkRnd*100)(D)Int(Rnd*89+11)
(2)(A)nMod2<>0(B)nMod3=0(C)nMod2=0(D)n/2=0
2.已知函数sum(k,n)=1^k+2^k+…+n^k。
下面的Function过程Sum计算给定参数时函数的值。
PrivateFunctionSum(kAsInteger,nAsInteger)AsLong
DimiAsInteger,sAsLong
Fori=1Ton
s=s+Power(
(1))
Nexti
Sum=s
EndFunction
PrivateFunctionPower(aAsInteger,bAsInteger)AsLong
DimiAsInteger,tAsLong
Fori=1Toa
(2)
Nexti
(3)
EndFunction
供选择的答案:
(1)(A)k,I(B)k,n(C)k,s(D)s,k
(2)(A)t=t+b(B)t=t*a(C)t=t*b(D)t=t*i
(3)(A)Power=Sum(B)Power=t(C)Sum=Power(D)Sum=t
3.如果一个正整数从高位到低位上的数字递减,则称此数为降序数。
例如,5433、887等都是降序数。
本程序当单击命令按钮时,从键盘输入一个正整数,调用numDecl过程判断输入的数是否是降序数,并在单击事件过程中输出判断结果。
PrivateSubCommand1_Clicko
DimnAsLong,flagAsBoolean
n=InputBox("请输入一个正整数")
CallnumDecl(n,flag)
If
(1)Then
Printn;"是降序数"
Else
Printn;"不是降序数"
EndIf
EndSub
PrivateSubnumDecl(nAsLong,
(2))
DimxAsString,iAsInteger
x=Tdm(Str(n))
Fori=1To(3)
IfMid(x,i,1)Nexti
Ifi=(51)Thenflag=TrueElseflag=False
EndSub
(1)(A)flag=.True.(B)flag(C)Notflag(D)flag=False
(2)(A)flagAsBoolean(B)fAsBoolean(C)flagAsSuing(D)flagAsTrue
(3)(A)10(B)Len(n)(C)Len(x)(D)15
(4)(A)ExitDo(B)ExitSub(C)ExitFor(D)Exit
(5)(A)Len(x)(B)10(C)15(D)Len(x)+1
4.如果两个质数的差为2,就称这两个质数为质数对。
下列程序代码输出100以内的质数对。
PrivateSubCommand1_Click()
DimiAsInteger
p1=IsP(3)
Fori=5To100Step2
p2=IsP(i)
If
(1)ThenPrinti-2,I
p1=
(2)
Nexti
EndSub
PublicFunctionIsP(mAsInteger)AsBoolean
DimiAsInteger
(3)
Fori=2ToInT(sqr(m))
If(4)ThenIsP=False:
ExitFor
Nexti
EndFunction
供选择的答案:
(1)(A)p1=p2(B)p1Andp2(C)p1p2(D)p1Orp2
(2)(A)p2(B)p1(C)True(D)False
(3)(A)IsP=False(B)i=1(C)p1=True(D)IsP=True
(4)(A)iMod2=0(B)m/i=0(C)mModi=0(D)m/2=0
5.下面的程序代码实现将一个一维数组中元素向右循环移动,移位次数由文本框Text1输入。
例如数组各元素的值依次为0,1,2,3,4,16,7,8,9,10;移位三次后,各元素的值依次为8,9,10,0,1,2,3,4,5,6,7。
PrivateSubCommand1_Click()
Dima(10)AsInteger,iAsInteger,jAsInteger,kAsInteger
Fori=0To10
a(i)=i
Nexti
j=Val(Text1.Text)
k=0
Do
k=k+1
(1)
LoopUntil
(2)
Fori=0To10
Printa(i);
Nexti
EndSub
PrivateSubMoveRight(X()AsInteger)
DimiAsInteger,jAsInteger,kAsInteger
i=UBound(x):
j=x(i)
Fork=iToLBound(x)+1Step–1
(3)
Nextk
(4)
EndSub
供选择的答案:
(1)(A)MoveRight(a)(B)CallMoveRight(C)CallMoveRight(a)(D)CallMoveRighta
(2)(A)k=3(B)k=j(C)j=3(D)k(3)(A)x(k)=x(k-1)(B)x(k)=x(k+1)(C)x(k-1)=x(k)(D)x(k+1)=x(k)
(4)(A)x(UBound(x))=j(B)x(LBound(x))=j(C)x(LBound(x))=x
(1)(D)x(UBound(x))=x
(1)
6.用弦截法求方程x-2sinx=0的根。
弦截法的设计思路为:
对于方程f(x)=0,找一个单调有根区间[x1,x2],连接f(x1)和f(x2)两点,连线与x轴交点的横坐标为:
x=x1*f(x2)-x2*f(x1)/(f(x2)-f(x1)