vb子过程和子函数题型分析.docx

上传人:b****4 文档编号:12205055 上传时间:2023-04-17 格式:DOCX 页数:20 大小:27.78KB
下载 相关 举报
vb子过程和子函数题型分析.docx_第1页
第1页 / 共20页
vb子过程和子函数题型分析.docx_第2页
第2页 / 共20页
vb子过程和子函数题型分析.docx_第3页
第3页 / 共20页
vb子过程和子函数题型分析.docx_第4页
第4页 / 共20页
vb子过程和子函数题型分析.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

vb子过程和子函数题型分析.docx

《vb子过程和子函数题型分析.docx》由会员分享,可在线阅读,更多相关《vb子过程和子函数题型分析.docx(20页珍藏版)》请在冰豆网上搜索。

vb子过程和子函数题型分析.docx

vb子过程和子函数题型分析

※子过程和子函数题型分析

(30)以下有关把数组作为形参的说明中错误的是 30 。

(A)形参数组只能按地址传递

(B)调用过程时,只需把要传递的数组名填入实参表

(C)使用动态数组时,可用ReDim语句改变形参数组的维界

(D)在过程中也可用Dim语句对形参数组进行说明

答案:

D

分析:

(5)当Sub过程Value形参表中存在ByVal关键字时,执行本程序,单击窗体,在窗体上显示的第一行内容是 [1] ,第二行内容是 

(2) ;若将形参表中的ByVal关键字删除,再执行本程序,单击窗体后在窗体上显示的第一行内容是 [3] ,第二行内容是 (4) 。

PrivateSubValue(ByValmAsInteger,ByValnAsInteger)

  m=m*2

  n=n-5

  Print"m=";m,"n=";n

EndSub

PrivateSubForm_Click()

  DimxAsInteger,yAsInteger

  x=10:

y=15

  CallValue(x,y)

  Print"x=";x,"y=";y

EndSub

x

y

m

n

打印

10

15

10

15

20

10

m=20n=10

x=10y=15

将形参表中的ByVal关键字删除后执行程序

x/m

y/n

打印

10

15

m=20n=10

20

10

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)

EndSub

n

k

digit

打印

1234

2

0

123

1

4

12

0

3

3

1234

3

0

123

2

4

12

1

3

1

0

2

2

答案:

(1)3

   

(2)2

(6)运行下面的程序,单击窗体后在窗体上显示的第二行结果是 [1] ,第四行结果是  [2]  。

DimyAsInteger

PrivateSubForm_Click()

  DimxAsInteger

  x=1:

y=1

  Print"x1=";x,"y1=";y

  Test

  Print"x4=";x,"y4=";y

EndSub

PrivateSubTest()

  DimxAsInteger

  Print"x2=";x,"y2=";y

  x=2:

y=3

  Print"x3=";x,"y3=";y

EndSub

x(主)

x(子)

y

打印

1

1

x1=0 y1=1

0

x2=0 y2=1

2

3

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

PrivateSubForm_Click()

 DimaAsInteger,bAsInteger

 a=5:

b=3

 Callsub1(a,b)

 Printa,b

 Printx,y

EndSub

PrivateSubsub1(ByValmAsInteger,nAsInteger)

 DimxAsInteger,yAsInteger

 x=m+n:

y=m-n

 m=fun1(x,y)

 n=fun1(x,y)

EndSub

PrivateFunctionfun1(aAsInteger,bAsInteger)AsInteger

 x=a+b:

y=a–b

 Printx,y

 fun1=x+y

EndFunction

x

y

a

b\n\fun1

m\fun1

x

y

a

b

打印

0

0

5

3

3

5

8

2

8

2

10

6

16

106

8

2

10

6

16

106

516

106

答案:

【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("245","231.5")

32.在应用程序中用"PrivateFunctionFun(XAsInteger,YAsSingle)"定义了函数Fun.调用函数Fun的过程中的变量I,J均定义为Integer型,能正确引用函数Fun的是___32___。

①Fun(I,J)②CallFun(I,3.65)

③Fun(3.14,234)④Fun("245","231.5")

(A)①③(B)②③④(C)①②③(D)①②③④

答案:

B

分析:

PrivateFunctionFun

XAsInteger

YAsSingle

①Fun(I,J)

I

J

②CallFun(I,3.65)

③Fun(3.14,234)

Fun("245","231.5")

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)窗体与控件也可以作为过程的参数

答案:

B

25.以下子过程或函数定义正确的是25。

A)Subf1(nAsString*1)

B)Subf1(nAsInteger)AsInteger

C)Functionf1(f1AsInteger)AsInteger

D)Functionf1(ByValnAsInteger)

答案:

D

解析:

如果形参变量的类型被说明为“String”,它只能是不定长的。

25.下列有关过程的说法中,错误的是25。

A)在Sub或Function过程内部不能再定义其它Sub或Function过程

B)对于使用ByRef说明的形参,在过程调用时形参和实参只能按传址方式结合

C)递归过程既可以是递归Function过程,也可以是递归Sub过程

D)可以像调用Sub过程一样使用Call语句调用Function过程

答案:

B

解析:

默认方式也是按传址方式结合的。

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")

答案:

B

27.以下有关过程中形式参数的描述中,错误的是27。

A)函数过程可以没有形式参数

B)事件过程一定没有形式参数

C)形参数组只能按地址与实参数组结合

D)窗体与控件也可以作为过程的参数

答案:

B

3.执行下面的程序,第一行输出结果是___(48)___,第三行输出结果是___(1286)___。

PrivateSubForm_Click()

DimAAsInteger,IAsInteger

A=2

ForI=1To9

CallSub1(I,A)

PrintI,A

NextI

EndSub

PrivateSubSub1(XAsInteger,YAsInteger)

StaticNAsInteger

DimIAsInteger

ForI=3To1Step-1

N=N+X

X=X+1

NextI

Y=Y+N

EndSub

分析:

循环变量I在子过程被改变了,本循环9次实际只循环了3次,打印出3行结果。

I=1+3+1+3+1+3+1=13,A/Y=2,8,32,86。

3.执行下面的程序,第一行输出结果是___(625)___,第三行输出结果是___(-237)___。

PrivateSubForm_Click()

DimNAsInteger,IAsInteger

N=2

ForI=9To1Step-1

CallSub2(I,N)

PrintI,N

NextI

EndSub

PrivateSubSub2(XAsInteger,YAsInteger)

StaticNAsInteger

DimIAsInteger

ForI=3To1Step-1

N=N+X

X=X-1

Y=N+I

NextI

EndSub

分析:

同上。

5.执行下面的程序,第一行输出结果是___(23)___,第二行输出结果是___(47)___。

OptionExplicit

PrivateSubForm_Click()

DimAAsInteger

A=2

CallSub1(A)

EndSub

PrivateSubSub1(XAsInteger)

X=X*2+1

IfX<10Then

CallSub1(X)

EndIf

X=X*2+1

PrintX

EndSub

A/X

打印

2

5

11

23

23

47

47

 

分析:

由于X是按地址传送,递归后的值不再保留原值。

5.执行下面程序,单击命令按钮Command1后,显示在窗体上第一行的内容是    ,第二行的内容是    ,第三行的内容是    。

OptionExplicit

PrivateSubCommand1_Click()

DimNAsInteger,MAsInteger

N=2

DoWhileM<3

N=N+2

IfFun(N)Then

PrintN

M=M+1

EndIf

Loop

EndSub

PrivateFunctionFun(ByValNAsInteger)AsBoolean

IfN/2=Int(N/2)Then

Fun=Fun(N/2)

Else

IfN=1ThenFun=True

EndIf

EndFunction

解析:

本题考察的递归函数问题。

表达式“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

答案:

D

分析:

在VB中,将Convert(X)视为Convert(X)。

2.执行下面的程序,单击命令按钮Command1后,文本框Text1中的内容是___c:

\ProgramFiles\DevStudio\VB___,文本框Text2中的内容是___VB5.exe___(函数InStr(Start,String1,String2)中Start参数表示每次搜索的起点)。

OptionExplicit

PrivateSubCommand1_Click()

DimPathAsString,SerachAsString

DimFpAsString,FnAsString

Path="c:

\ProgramFiles\DevStudio\VB\VB5.exe"

CallSearch_Path(Path,Fp,Fn)

text1.Text=Fp

text2.Text=Fn

EndSub

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)

EndSub

3.执行下面的程序,当单击窗体时,窗体上显示内容的第一行是132___,第二行是1__12___2_。

PrivateSubP1(xAsInteger,ByValyAsInteger)

StaticzAsInteger

x=x+z:

y=x-z:

z=10-y

EndSub

PrivateSubForm_Click()

DimaAsInteger,bAsInteger,zAsInteger

a=1:

b=3:

z=2

CallP1(a,b)

Printa,b,z

CallP1(b,a)

Printa,b,z

EndSub

a/x

b/x

z

y

z

打印

1

3

2

2

0

132

1

12

1

9

1122

3

7

 

分析:

略。

29.下列定义Sub过程的语句中,正确的语句是  29  。

①PrivateSubTest(StAsString*8)

②PrivateSubTest(Sarray()AsString*8)

③PrivateSubTest(Sarray()AsString)

④PrivateSubTest(StAsString)

(A)①②(B)①④(C)②③④(D)①②③④

答案:

C

分析:

参数列表。

参数列表中的参数称为形式参数,它可以是变量名或数组名。

若有多个参数时,各参数之间用逗号分隔。

VB的过程可以没有参数,但一对圆括号不可以省略。

不含参数的过程称为无参过程。

形式参数格式为:

[ByVal]变量名[()][As数据类型]

变量名[()]:

变量名为合法的VB变量名或数组名。

若变量名后无括号,则表示该形参是变量,否则是数组。

ByVal:

表明其后的形参是按值传递参数或称为“传值”(PassedbyValue)参数,若缺省或用“ByRef”替代,则表明参数是按地址传递(传址)参数或称为“引用”(PassedbyReference)参数。

As数据类型:

该选项用来说明变量类型,若缺省,则该形参是“变体变量”(Variant)。

如果形参变量的类型被说明为“String”,它只能是不定长的。

而在调用该过程时,对应的实在参数可以是定长的字符串变量或字符串数组元素。

如果形参是字符串数组,则没有这个限制。

28.下面关于过程参数的说法,错误的是___。

  (A)过程的形参不可以是定长字符串类型的变量

  (B)形参是定长字符串的数组,则对应的实参必须是定长字符串型数组,且长度相同

  (C)若形参是按地址传递的参数,形参和实参也能以按值传递方式进行形实结合

  (D)按值传递参数,形参和实参的类型可以不同,只要相容即可

答案:

B

分析:

同上。

**

5.执行下面程序,单击命令按钮Command1后,窗体上显示的第一行内容是    ,第二行内容是    ,最后一行内容是    。

PrivateSubCommand1_Click()

DimAAsInteger,KAsInteger

A=2

K=Fun((A),A)+Fun(A,A)

Print"K=";K

EndSub

PrivateFunctionFun(XAsInteger,YAsInteger)AsInteger

StaticKAsInteger

K=K+X+Y

X=X+Y

Y=Y+K

Fun=X+Y

PrintFun;X;Y

EndFunction

Fun((A),A)

A\Y

X

K

打印

2

2

0

6

4

4

1046

Fun(A,A)

A\X\Y

K

打印

2

6

16

12

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为本程序设计界面)。

PrivateSubCommand1_Click()

 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))

   Text1="GCD("&CStr(a)&","&CStr(b)&")="&CStr(r)

 EndIf

EndSub

PrivateFunctiongcd(xAsInteger,yAsInteger)AsInteger

 DimrAsInteger

 r=xMody

 DoWhiler<>0

   x=y:

y=r

   r=xMody

 Loop

 gcd=y

EndFunction

图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) 。

PrivateSubCommand1_Click()

 Output_Count4

 Output_Count8

 Output_Count4

EndSub

PrivateSubOutput_Count(UpperLimitAsInteger)

 StaticLowerLimitAsInteger

 DoWhileLowerL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1