vb子过程和子函数题型分析Word下载.docx
- 文档编号:4397217
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:20
- 大小:27.78KB
vb子过程和子函数题型分析Word下载.docx
《vb子过程和子函数题型分析Word下载.docx》由会员分享,可在线阅读,更多相关《vb子过程和子函数题型分析Word下载.docx(20页珍藏版)》请在冰点文库上搜索。
x=10y=15
将形参表中的ByVal关键字删除后执行程序
x/m
y/n
x=20y=10
(1)m=20n=10
(2)x=10y=15
(3)m=20n=10
(4)x=20y=10
(25)在语句PublicSubSort(iAsInteger)中i是一个按 25 传递的参数。
(A)地址 (B)值 (C)变量 (D)常量
A
(3)运行下面的程序,单击窗体后在窗体上显示的第一行结果是
(1) ,第二行结果是
(2) 。
PrivateFunctiondigit(nAsInteger,kAsInteger)AsInteger
digit=0
DoWhilek>
0
digit=nMod10
n=n\10
k=k-1
Loop
EndFunction
PrivateSubForm_Click()
Printdigit(1234,2)
Printdigit(1234,3)
k
digit
1234
2
123
1
4
12
3
(1)3
(2)2
(6)运行下面的程序,单击窗体后在窗体上显示的第二行结果是 [1] ,第四行结果是 [2] 。
DimyAsInteger
DimxAsInteger
x=1:
y=1
x1="
y1="
Test
x4="
y4="
PrivateSubTest()
x2="
y2="
x=2:
y=3
x3="
y3="
x(主)
x(子)
x1=0 y1=1
x2=0 y2=1
x3=2 y3=3
x4=1 y4=3
(12)x2=0 y2=1
(13)x4=l y4=3
变量y是窗体变量,x是过程变量。
2.运行下面的程序,当单击窗体时,窗体上第一行内容是 【4】 ,第三行内容是 【5】 ,第四行内容是 【6】 。
OptionExplicit
DimxAsInteger,yAsInteger
DimaAsInteger,bAsInteger
a=5:
b=3
Callsub1(a,b)
Printa,b
Printx,y
PrivateSubsub1(ByValmAsInteger,nAsInteger)
DimxAsInteger,yAsInteger
x=m+n:
y=m-n
m=fun1(x,y)
n=fun1(x,y)
PrivateFunctionfun1(aAsInteger,bAsInteger)AsInteger
x=a+b:
y=a–b
fun1=x+y
a
b\n\fun1
m\fun1
b
5
8
6
16
106
516
【4】10 6
【5】5 16
【6】10 6
24.若在应用程序中用“PrivateSubSub1(XAsInteger,YAsSingle)”定义了子程序Sub1,调用程序中的变量I,J均为Integer型,则正确调用子程序Sub1的Call语句是___24___。
①CallSub1(I,J)②CallSub1(3.1415,I)
③CallSub1(3.14,234)④CallSub1("
245"
"
231.5"
)
(A)①③(B)③④(C)①②③(D)无
B
用I,J对应y会产生类型不匹配的错误。
PrivateSubSub1
XAsInteger
YAsSingle
①CallSub1(I,J)
I
JInteger
②CallSub1(3.1415,I)
IInteger
③CallSub1(3.14,234)
④CallSub1("
32.在应用程序中用"
PrivateFunctionFun(XAsInteger,YAsSingle)"
定义了函数Fun.调用函数Fun的过程中的变量I,J均定义为Integer型,能正确引用函数Fun的是___32___。
①Fun(I,J)②CallFun(I,3.65)
③Fun(3.14,234)④Fun("
(A)①③(B)②③④(C)①②③(D)①②③④
PrivateFunctionFun
①Fun(I,J)
J
②CallFun(I,3.65)
③Fun(3.14,234)
Fun("
26.在窗体Form1中用"
PublicSubFun(xAsInteger,yAsSingle)”定义过程Fun,在窗体Form2中定义了变量i为Integer,j为Single,若要在Form2的某事件过程中调用Form1中的Fun过程,下列语句中能够被正确使用语句有 26 个
①CallFun(i,j)②CallForm1.Fun(i,j)
③Form1.Fun(i),j④Form1.Funi+1,(j)
(A)1(B)2(C)3(D)4
C
①CallFun(i,j)只能调用Form2中的Fun过程。
27.以下有关过程中形式参数的描述中,错误的是27。
A)函数过程可以没有形式参数
B)事件过程一定没有形式参数
C)形参数组只能按地址与实参数组结合
D)窗体与控件也可以作为过程的参数
25.以下子过程或函数定义正确的是25。
A)Subf1(nAsString*1)
B)Subf1(nAsInteger)AsInteger
C)Functionf1(f1AsInteger)AsInteger
D)Functionf1(ByValnAsInteger)
解析:
如果形参变量的类型被说明为“String”,它只能是不定长的。
25.下列有关过程的说法中,错误的是25。
A)在Sub或Function过程内部不能再定义其它Sub或Function过程
B)对于使用ByRef说明的形参,在过程调用时形参和实参只能按传址方式结合
C)递归过程既可以是递归Function过程,也可以是递归Sub过程
D)可以像调用Sub过程一样使用Call语句调用Function过程
默认方式也是按传址方式结合的。
29.若在模块中用PrivateFunctionFun(AAsSingle,BAsInteger)AsInteger定义了函数Fun。
调用函数Fun的过程中定义I、J和K三个Integer型变量,则下列语句中不能正确调用函数Fun的语句是(29)。
A)Fun3.14,JB)CallFun(I,365)
C)Fun(I),(J)D)K=Fun("
24"
,"
35"
3.执行下面的程序,第一行输出结果是___(48)___,第三行输出结果是___(1286)___。
DimAAsInteger,IAsInteger
A=2
ForI=1To9
CallSub1(I,A)
PrintI,A
NextI
PrivateSubSub1(XAsInteger,YAsInteger)
StaticNAsInteger
DimIAsInteger
ForI=3To1Step-1
N=N+X
X=X+1
Y=Y+N
循环变量I在子过程被改变了,本循环9次实际只循环了3次,打印出3行结果。
I=1+3+1+3+1+3+1=13,A/Y=2,8,32,86。
3.执行下面的程序,第一行输出结果是___(625)___,第三行输出结果是___(-237)___。
DimNAsInteger,IAsInteger
N=2
ForI=9To1Step-1
CallSub2(I,N)
PrintI,N
PrivateSubSub2(XAsInteger,YAsInteger)
X=X-1
Y=N+I
同上。
5.执行下面的程序,第一行输出结果是___(23)___,第二行输出结果是___(47)___。
DimAAsInteger
CallSub1(A)
PrivateSubSub1(XAsInteger)
X=X*2+1
IfX<
10Then
CallSub1(X)
EndIf
PrintX
A/X
11
23
47
由于X是按地址传送,递归后的值不再保留原值。
5.执行下面程序,单击命令按钮Command1后,显示在窗体上第一行的内容是 ,第二行的内容是 ,第三行的内容是 。
PrivateSubCommand1_Click()
DimNAsInteger,MAsInteger
N=2
DoWhileM<
3
N=N+2
IfFun(N)Then
PrintN
M=M+1
Loop
PrivateFunctionFun(ByValNAsInteger)AsBoolean
IfN/2=Int(N/2)Then
Fun=Fun(N/2)
Else
IfN=1ThenFun=True
本题考察的递归函数问题。
表达式“N/2=Int(N/2)”等式成立表示N能被2整除,当N能被2整除就继续递归调用,否则就终止递归调用;
当N为1时,Fun返回True。
最终4、8、16这3个自然数能满足上述条件。
4816
25.用语句PrivateSubConvert(YAsInteger)定义的Sub过程时,以下不是按值传递的语句是___25___。
(A)CallConvert((X))(B)CallConvert(X*1)
(C)Convert(X)(D)ConvertX
在VB中,将Convert(X)视为Convert(X)。
2.执行下面的程序,单击命令按钮Command1后,文本框Text1中的内容是___c:
\ProgramFiles\DevStudio\VB___,文本框Text2中的内容是___VB5.exe___(函数InStr(Start,String1,String2)中Start参数表示每次搜索的起点)。
DimPathAsString,SerachAsString
DimFpAsString,FnAsString
Path="
c:
\ProgramFiles\DevStudio\VB\VB5.exe"
CallSearch_Path(Path,Fp,Fn)
text1.Text=Fp
text2.Text=Fn
PrivateSubSearch_Path(PAsString,FpAsString,FnAsString)
DimNsAsLong,CtAsLong
Ns=0
Do
Ct=Ns
Ns=InStr(Ct+1,P,"
\"
LoopUntilNs=0
Fp=Left(P,Ct-1)
Fn=Right(P,Len(P)-Ct)
3.执行下面的程序,当单击窗体时,窗体上显示内容的第一行是132___,第二行是1__12___2_。
PrivateSubP1(xAsInteger,ByValyAsInteger)
StaticzAsInteger
x=x+z:
y=x-z:
z=10-y
DimaAsInteger,bAsInteger,zAsInteger
a=1:
b=3:
z=2
CallP1(a,b)
Printa,b,z
CallP1(b,a)
a/x
b/x
z
132
9
1122
7
略。
29.下列定义Sub过程的语句中,正确的语句是 29 。
①PrivateSubTest(StAsString*8)
②PrivateSubTest(Sarray()AsString*8)
③PrivateSubTest(Sarray()AsString)
④PrivateSubTest(StAsString)
(A)①②(B)①④(C)②③④(D)①②③④
参数列表。
参数列表中的参数称为形式参数,它可以是变量名或数组名。
若有多个参数时,各参数之间用逗号分隔。
VB的过程可以没有参数,但一对圆括号不可以省略。
不含参数的过程称为无参过程。
形式参数格式为:
[ByVal]变量名[()][As数据类型]
变量名[()]:
变量名为合法的VB变量名或数组名。
若变量名后无括号,则表示该形参是变量,否则是数组。
ByVal:
表明其后的形参是按值传递参数或称为“传值”(PassedbyValue)参数,若缺省或用“ByRef”替代,则表明参数是按地址传递(传址)参数或称为“引用”(PassedbyReference)参数。
As数据类型:
该选项用来说明变量类型,若缺省,则该形参是“变体变量”(Variant)。
而在调用该过程时,对应的实在参数可以是定长的字符串变量或字符串数组元素。
如果形参是字符串数组,则没有这个限制。
28.下面关于过程参数的说法,错误的是___。
(A)过程的形参不可以是定长字符串类型的变量
(B)形参是定长字符串的数组,则对应的实参必须是定长字符串型数组,且长度相同
(C)若形参是按地址传递的参数,形参和实参也能以按值传递方式进行形实结合
(D)按值传递参数,形参和实参的类型可以不同,只要相容即可
**
5.执行下面程序,单击命令按钮Command1后,窗体上显示的第一行内容是 ,第二行内容是 ,最后一行内容是 。
DimAAsInteger,KAsInteger
K=Fun((A),A)+Fun(A,A)
Print"
K="
K
PrivateFunctionFun(XAsInteger,YAsInteger)AsInteger
StaticKAsInteger
K=K+X+Y
X=X+Y
Y=Y+K
Fun=X+Y
PrintFun;
X;
Y
Fun((A),A)
A\Y
X
K
1046
Fun(A,A)
A\X\Y
28
562828
10+56
K=66
1046 562828 k=66
5.执行下面的程序,如果不选中复选框Check1,单击命令按钮Command1,则在文本框Text1中显示的变量a的值为 (9) 、b的值为 (10) 、r的值为 (11) ;
如果选中复选框Check1,单击命令按钮Command1,则文本框Text1中显示为 (12) (图1为本程序设计界面)。
DimaAsInteger,bAsInteger,rAsInteger
a=27:
b=12
IfCheck1.Value=0Then
r=gcd(a,b)
Text1="
GCD("
&
CStr(a)&
"
CStr(b)&
)="
CStr(r)
ElseIfCheck1.Value=1Then
r=gcd((a),(b))
EndIf
PrivateFunctiongcd(xAsInteger,yAsInteger)AsInteger
DimrAsInteger
r=xMody
DoWhiler<
>
x=y:
y=r
r=xMody
Loop
gcd=y
图1
(9)12
(10)3
(11)3
(12)GCD(27,12)=3
这是在实现子过程被调用时参数虚实结合的问题。
gcd(a,b)中变量a和变量b按址传送,gcd((a),(b))中表达式(a)和表达式(b)按值传送。
子函数gcd的功能是求x和y的最大公约数。
5.执行下面程序,单击命令按钮Command1,则在窗体上第一行显示是 (10) ,第二行显示是 (11) ,第三行显示是 (12) 。
Output_Count4
Output_Count8
PrivateSubOutput_Count(UpperLimitAsInteger)
StaticLowerLimitAsInteger
DoWhileLowerL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 过程 子函数 题型 分析