3 VB的过程函数与方法.docx
- 文档编号:3639311
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:19
- 大小:20.34KB
3 VB的过程函数与方法.docx
《3 VB的过程函数与方法.docx》由会员分享,可在线阅读,更多相关《3 VB的过程函数与方法.docx(19页珍藏版)》请在冰豆网上搜索。
3VB的过程函数与方法
§3VB的过程、函数与方法练习
知识点:
过程、自定义函数
1、在下列描述中,不是VB中使用的过程的是(D)
A、Sub过程不返回值
B、Function过程返回值
C、Property过程返回并指定值,以及设置对象引用
D、Private过程无返回值
2、Function子程序模块用的结束语句是(D)
A、exitsub
B、exitfunction
C、end
D、endfunction
3、下列为Funct函数的定义语句,错误的是(A)
A、PrivatePublicFunct(a)asInteger
B、StaticFunctionFunct(a)
C、FunctionFunct(aasInteger)AsInteger
D、PrivateFunctionFunct(aAsInteger)
4、Function过程要由函数名返回一个值。
如果不使用AS数据类型选项来指定函数的类型,函数类型默认为(B)类型。
A、IntegerB、VariantC、LongD、String
提示:
function过程函数名省略为“as”数据类型选项,系统默认为"variant"类型。
5、以下叙述中错误的是(D)
A、如果过程被定义为Static类型,则该过程中的局部变量都是Static类型
B、Sub过程中不能嵌套定义Sub过程
C、Sub过程中可以嵌套调用Sub过程
D、事件过程可以像通用过程一样由用户定义过程名
知识点:
变量的作用域
6、下列叙述中正确的是(C)
A、在窗体的Form_load事件过程中定义的变量是全局变量
B、局部变量的作用域可以超出所定义的过程
C、在某个Sub过程中定义的局部变量可以与其它事件过程中定义的局部变量同名,但其作用域只限于该过程
D、在调用过程时,所有局部变量被系统初始化为0或空字符串
提示:
局部变量作用域只限于本过程
7、下列描述错误的是(B)
A、一个工程中可以包含多个窗体文件
B、在一个窗体文件中用Private定义的通用过程能被其他窗体调用
C、在设计VB程序时,窗体,标准模块,类模块等需要分别保存为不同类型的文件
D、全局常量必须在标准模块中定义
8、在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
PrivateSubCommand1_Click()
StaticXAsInteger
StaticYAsInteger
Cls
Y=1
Y=Y+5
X=5+X
PrintX,Y
EndSub
程序运行时,三次单击命令按钮Command1后,窗体上显示的结果为(B)
A、1516B、156C、1515D、56
提示:
此题重点为:
X为静态变量,所以单击三次,则累加,结果为15;Y虽也是静态变量,但在次单击,Y都重新赋值为1,所以Y为6
9、在窗体上画一个名称为Command1的命令按钮和三个名称为Label1、Label2、Label3的标签,然后编写如下代码:
PrivatexAsInteger
PrivateSubCommand1_Click()
StaticyAsInteger
DimzAsInteger
n=10
z=n+z
y=y+z
x=x+z
Label1.Caption=x
Label2.Caption=y
Label3.Caption=z
EndSub
程序运行后,连续三次单击命令按钮,则三个标签中显示的内容分别是(C)
A、101010B、303030C、303010D、103030
知识点:
参数传递
10、在窗体上画一个命令按钮,名称为Command1。
程序运行后,如果单击命令按钮,则显示一个输入对话框,在该对话框中输入一个整数,并用这个整数作为实参调用函数过程F1。
在F1中判断所输入的整数是否是奇数,如果是奇数,过程F1返回1,否则返回0。
能够正确实现上述功能的代码是(B)
A、
PrivateSubCommand1_ClicK()
x=InputBox("请输入整数")
a=F1(val(x))
Printa
EndSub
FunctionF1(ByRefbASInteger)
IfbMod2=0Then
Return0
Else
Return1
EndIf
EndFunction
B、
PrivateSubCommand1_ClicK()
x=InputBox("请输入整数")
a=F1(val(x))
Printa
EndSub
FunctionF1(ByRefbASInteger)
IfbMod2=0Then
F1=0
Else
F1=1
EndIf
EndFunction
C、
PrivateSubCommand1_ClicK()
x=InputBox("请输入整数")
F1(val(x))
Printa
EndSub
FunctionF1(ByRefbASInteger)
IfbMod2=0Then
F1=1
Else
F1=0
EndIf
EndFunction
D、
PrivateSubCommand1_ClicK()
x=InputBox("请输入整数")
F1(val(x))
Printa
EndSub
FunctionF1(ByRefbASInteger)
IfbMod2=0Then
Return0
Else
Return1
EndIf
EndFunction
提示:
调用函数若要返回结果,在子函数中必须给函数名赋值
11、在窗体上画和一个名称为Command1的命令按钮和一个名称为Text1的文本框,然后编写如下程序:
PrivateSubCommand1_Click()
Dimx,y,zASInteger
x=5
y=7
z=0
Text1.Text=""
CallP1(x,y,z)
Text1.Text=Str(z)
EndSub
SubP1(byValaAsInteger,ByValbAsInteger,cAsInteger)
c=a+b
EndSub
程序运行后,如果单击命令按钮,则在文本框中显示的内容是(B)
A、0B、12C、Str(z)D、没有显示
提示:
X,Y是按值传送,Z是按地址传送。
12、假定有以下函数过程:
FunctionFun(SASString)AsString
Dims1AsString
Fori=1ToLen(s)
s1=Ucase(Mid(S,i,1))+s1
Nexti
Fun=s1
EndFunction
在窗体上画一个命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
DimStr1AsString,Str2AsString
Str1=InputBox("请输入一个字符串")
Str2=Fun(Str1)
PrintStr2
EndSub
程序运行后,单击命令按钮,如果在输入对话框中输入字符串“abcdefg”,则单击“确定”按钮后在窗体上的输出结果为(D)
A、abcdefgB、ABCDEFGC、gfedcbaD、GFEDCBA
13、在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如下程序代码:
PrivateXAsInteger
PrivateSubCommand1_Click()
X=5:
Y=3
Callproc(X,Y)
Label1.Caption=X
Label2.Caption=Y
EndSub
PrivateSubproc(ByValaAsInteger,ByValbAsInteger)
X=a*a
Y=b+b
EndSub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是(B)
A、5和3B、25和3C、25和6D、5和6
14、设有如下通用过程:
PublicFunctionf(xAsInteger)
DimyAsInteger
x=20
y=2
f=x*y
EndFunction
在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
StaticxAsInteger
x=10
y=5
y=f(x)
Printx;y
EndSub
程序运行后,如果单击命令按钮,则在窗体上显示的内容是(C)。
A、105B、205C、2040D、1040
15、设有如下通用过程:
PublicSubFun(a(),ByValxAsInteger)
Fori=1To5
x=x+a(i)
Next
EndSub
在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下的事件过程:
PrivateSubCommand1_Click()
Dimarr(5)AsVariant
Fori=1To5
arr(i)=i
Next
n=10
CallFun(arr(),n)
Text1.Text=n
EndSub
程序运行后,单击命令按钮,则在文本框中显示的内容是(A)
A、10B、15C、25D、24
16、窗体中添加一个命令按钮,编写如下程序:
privatesubtest(p,m,n)
p=p+1:
m=m+1:
n=n+1
print"Sub:
";p;m;n
endsub
privatesubcommand1_click()
a1=1:
b1=2:
c1=3
calltest(a1,b1+3,(c1))
print"Main:
";a1;b1;c1
endsub
程序运行后,输出结果为(D)
A、
Sub:
264
Main:
264
B、
Sub:
264
Main:
164
C、
Sub:
264
Main:
123
D、
Sub:
264
Main:
223
提示:
这是在实现子过程被调用时参数虚实结合的问题。
a1为变量按址传送,b1+3和(c1)为表达式按值传送
17、有如下函数:
functionfact(xasinteger)aslong
dimpaslong,iasinteger
p=1
fori=1tox
p=p*i
nexti
fact=p
endfunction
调用它的事件过程如下:
privatesubcommand1_click()
i=val(inputbox("请输入数据"))
a=fact((i))
printa
endsub
若输入数据5,则运行结果为(A)
A、120B、60C、80D、100
18、有如下函数过程:
functiongys(byvalxasinteger,byvalyasinteger)asinteger
dowhiley<>0
preminder=x/y
x=y
y=preminder
loop
gys=x
endfunction
以下是调用该函数的事件过程,该程序的运行的结果是(C)
privatesubcommand1_click()
dimaasinteger
dimbasinteger
a=10
b=2
x=gys(a,b)
printx
endsub
A、0B、25C、5D、100
19、下列程序运行后的输出结果是(D)
privatesubf(k,s)
s=1
forj=1tok
s=s*j
nextj
endsub
privatesubcommand1_click()
sum=0
fori=1to3
callf(i,s)
sum=sum+s
nexti
printsum
endsub
A、0B、3C、6D、9
提示:
本题重点是在子过程的调用过程中,虚实参数的传送问题,变量s按址传送,子过程f()求n!
sum的计算过程为1!
+2!
+3!
=9
20、假定有如下的sub过程:
subsub1(xassingle,yassingle)
t=x
x=t/y
y=tmody
endsub
在窗体上画一个命令按钮,然后编写如下事件过程:
privatesubcommand1_click()
dimaassingle
dimbassingle
a=5
b=4
sub1a,b
printa;b
endsub
程序运行后,单击命令按钮,输出结果为(D)
A、54B、11C、1.25.4D、1.251
21、下列程序执行后的输出结果是(A)
FunctionFF(n)
x=1
x=n*n
FF=x–11
EndFunction
PrivateSubCommand1_Click()
Fork=1To2
y=FF(k):
Printy
Nextk
EndSub
A、–10–9B、108C、13D、04
22、下列程序执行后,整型变量N的值是(B)
PrivateSubCommand1_Click()
n=0
Fori=1To100
IfiMod4=0Thenn=n+1
Nexti
Printn
EndSub
A、5050B、25C、26D、33
23、有下列过程
Functionfn(ByValnumAsLong)
DimkAsLong
k=1
num=Abs(num)
DoWhilenum
k=k*(numMod10)
num=num\10
Loop
fn=k
EndFunction
以下是调用该函数的过程,在运行程序后,在输入对话框中输入数字"123",运行结果是(B)
PrivateSubCommand1_Click()
DimnAsLong
DimrAsLong
n=InputBox("请输入一个数值")
n=CLng(n)
r=fn(n)
Printr
EndSub
A、12B、6C、3D、1
24、下列程序运行后,三次点击command1,窗口上显示的结果是(B)
PrivateSubCommand1_Click()
StaticxAsInteger
StaticyAsInteger
Cls
y=1
y=y+5
x=5+x
Printx,y
EndSub
A、1516B、156C、1515D、56
25、程序最后的结果是(C)
PrivateSubForm_Activate()
DimaAsInteger
Fori=4To5
a=fun(i)
Printa,
Nexti
EndSub
PrivateFunctionfun(n)AsInteger
Ifn>0Then
fun=n*fun(n–1)
Else:
fun=1
EndIf
EndFunction
A、45B、12120C、24120D、2460
26、有如下函数过程:
Functiongys(ByValxAsInteger,ByValyAsInteger)AsInteger
DoWhiley<>0
reminder=xMody
x=y
y=reminder
Loop
gys=x
EndFunction
以下是调用该函数过程,该程序的运行结果是(B)
PrivateSubCommand1_Click()
DimaAsInteger
DimbAsInteger
a=100:
b=25
x=gys(a,b)
Printx
EndSub
A、0B、25C、50D、100
提示:
本题的难点是子函数调用过程,子函数GYS的功能是求X和Y的公约数,有“欧几里德”求最大公约数的算法可知,当余数R为0时,X为X和Y的最大公约数。
变量X的值通过子函数名返回。
27、假定有下面的过程:
Functionfunc(aAsInteger,bAsInteger)AsInteger
StaticmAsInteger,iAsInteger
m=0
i=2
i=i+m+1
m=i+a+b
func=m
EndFunction
在窗体上画一个命令按纽,然后编写如下的事件过程:
PrivateSubCommand1_Click()
DimkAsInteger,mAsInteger
DimpAsInteger
k=4
m=1
p=func(k,m)
Printp
EndSub
该程序的运行结果是(A)
A、8B、9C、10D、11
28、有一个过程如下:
Subfact(mAsInteger,totalAsLong)
DimiAsInteger
total=1
Fori=1Tom
total=total*i
Nexti
EndSub
调用它的事件过程如下:
PrivateSubCommand1_Click()
DimtotAsLong
DimaAsInteger
a=Val(InputBox("请输入数据"))
Callfact(a,tot)
Printtot
EndSub
则输入数据5,运行结果为(B)。
A、100B、120C、200D、50
29、以下关于过程及过程参数的描述中,错误的是(C)
A、过程的参数可以是控件名称
B、用数组作为过程的参数时,使用的是“传地址”方式
C、只有函数过程能够将过程中处理的信息传回到调用的程序中
D、窗体可以作为过程的参数
二、选择题
1、在窗体上画一个命令按钮,其名称为Command1,然后编写如下程序:
FunctionM(xAsInteger,yAsInteger)AsInteger
M=IIf(x>y,x,y)
EndFunction
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=100
b=200
PrintM(a,b)
EndSub
程序运行后,单击命令按钮,输出结果为__200__。
2、设有如下程序
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=20:
b=50
p1a,b
p2a,b
p3a,b
Print"a=";a,"b=";b
EndSub
Subp1(xAsInteger,ByValyAsInteger)
x=x+10
y=y+20
EndSub
Subp2(ByValxAsInteger,yAsInteger)
x=x+10
y=y+20
EndSub
Subp3(ByValxAsInteger,ByValyAsInteger)
x=x+10
y=y+20
EndSub
该程序运行后,单击窗体,则在窗体上显示的内容是:
a=___30___和b=___70____。
3、设有如下程序
PrivateSubsearch(a()AsVariant,ByValKeyAsVariant,index%)
DimI%
ForI=LBound(a)ToUbound(a)
IfKey=a(I)Then
index=I
ExitSub
EndIf
NextI
Index=–1
EndSub
PrivateSubForm_load()
Show
Dimb()AsVariant
DimnAsInteger
b=Array(1,3,5,7,9,11,13,15)
Callsearch(b,11,n)
Printn
EndSub
程序运行后,输出结果是___5___
4、有如下程序:
privatesubcommand1_click()
a=1:
b=1
print"a=";a;",b=";b
callmult((a),b)
5:
print"a=";a;",b=";b
endsub
submult(x,y)
x=2*k
y=3*y
print"x=";x;"y=";y
endsub
运行后,语句标号为5的print语句的输出结果是a=1,b=3
提示:
本题中,第一个实参变量a用括号括起来,采用的是值传递方式,第二个实参变量b没有括号括起来,采用的是地址传递方式。
在调用了程序后,第一个实参a的值为1,不管在子程序中是否被重新赋值,返回调用程序,保留调用前的值为1;第二个实参b的值为1,在子程序中被重新赋值为3,返回调用程序就不再保留用前的值,而是带回了形参的值3。
因此,在标号为5的print语句中的输出项为a=1,b=3。
021106、下列程序完成的功能是找出100以内的某些整数,这些整数应满足:
此数各个位的数字的阶乘相加之和等于该数,阶乘由function过程计算。
阅读下面程序,请在处填上正确内容。
privatesubcommand1_click()
fork=1to100
a=ltrim(str(k))
n=0
fori=1ToLen(a)
p=val(mid(a,i,1))
n=n+fact(p)
nexti
ifn=kthenprintk
nextk
endsub
functionfact(x)
ifx<=1then
fact=1
else
fact=x*fact(x–1)
endif
endfunction
5、在窗口中添加一个命令按钮,编写代码如下:
Subf(k,s)
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB的过程函数与方法 VB 过程 函数 方法