有下列两个过程:Sub S1(ByVal x As Integer,ByVal y As Integer)Dim t As Integert=xx=yy=tEnd S

题目

有下列两个过程:

Sub S1(ByVal x As Integer,ByVal y As Integer)

Dim t As Integer

t=x

x=y

y=t

End Sub

Sub S2(x As Integer,y As Integer)

Dim t As Integer

t=x

x=y

y=t

End Sub

则下列叙述中正确的是( )。

A.用过程S1可以实现交换两个变量的值的操作,S2不能实现

B.用过程S2可以实现交换两个变量的值的操作,S1不能实现

C.用过程S1和S2都可以实现交换两个变量的值的操作

D.用过程S1和S2都不能实现交换两个变量的值的操作

参考答案和解析
正确答案:B
解析:在S2过程中,参数的传递是以“按地址”形式传递的,这种形式在参数传递后,形参的改变可以影响实参的改变;而S1过程中,参数的传递是以“传值”形式传递的,这种形式在参数传递后,形参的变化不会影响实参的变化。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下函数过程:

Function HFC(ByVal x As Integer, ByVal y As Integer) As Integer

Do While y <> 0

sic=x / y

x=y

y=sic

Loop

HFC=x

End Function

以下是该函数的调用过程,该程序的运行结果是

Private Sub Command1_Click()

Dim a As Integer

Dim b As Integer

a=12

b=2

x=HFC(a, B.

Print x

End Sub( )。

A.0

B.6

C.2

D.80


正确答案:B

第2题:

在窗体上画一个命令按钮,然后编写如下程序: Sub S1(ByVal x As Integer,ByVal y As Integer) Dim t As Integer t=x x=y y=t End Sub Private Sub Command1_Click() Dim a As Integer,b As Integer a=10 b=30 S1 a,b Print"a=";a;"b=";b End Sub 程序运行后,单击命令按钮,输出结果是 ______。

A.a=30 b=10

B.a=30 b=30

C.a=10 b=30

D.a=10 b=10


正确答案:C
解析:过程S1似乎是要将两个变量的值进行交换,但由于参数是用传值的方式来传递变量值的,所以执行完该过程后,a和b的值并未被交换,保持原来的值不变。

第3题:

( 27 )要想在过程 Proc 调用后返回形参 x 和 Y 的变化结果,下列定义语句中正确的是

A ) Sub Proc ( x as Integer,y as Integer )

B ) Sub Proc ( ByVal x as Integer, y as Integer )

C ) Sub Proc ( x as Integer,Byval y as Integer )

D ) Sub Proc ( Byval x as Integer, Byval y as Integer )


正确答案:A


 

第4题:

单击命令按钮,下列事件过程的执行结果为 Private Sub Command1_Click( ) Dim x As Integer, y As Integer x=40:y=72 Call PtoP(x, y) Print x; y End Sub Public Sub PtoP(Byval n AS Integer, ByVal m Aa Integer) n = n \ 10+2 m = m \ 10+2 End Sub

A.0 8

B.40 72

C.4 50

D.78 50


正确答案:B
解析:此题是函数过程的调用。在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在VisualBasic中,实参与形参的结合有两种方式:即传址与传值。这两种方法的特点如下:传址的结合过程是,当调用一个过程时,它将实参的地址传给形参,因此在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。传值的结合过程是,当调用一个过程时,系统将实参的值复制给形参并断开了联系,被调用过程中的操作是在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程PtoP中有两个形参,两者均为传值方式。主调过程分别把实参x、y传递给PtoP,所以当过程调用结束后,实参x、y的值都没有改变,最后输出的值应为4072。

第5题:

(27)有下列两个过程: Sub S1(ByVal x As Integer,ByVal y As Integer) Dim t As Integer t=x x=y y=t End Sub Sub S2(x As Integer,y As Integer) Dim t As Integer t=x x=y y=t End Sub 则下列叙述中正确的是 A.用过程S1可以实现交换两个变量的值的操作,S2不能实现B.用过程S2可以实现交换两个变量的值的操作,S1不能实现 C.用过程S1和S2可以实现交换两个变量的值的操作 D.用过程S1和S2不能实现交换两个变量的值的操作


正确答案:B
【解析】在S2过程中,参数的传递是以“按地址”形式传递的,这种形式在参数传递后,形参的改变可以影响实参的改变;而S1过程中,参数的传递是以“传值”形式传递的,这种形式在参数传递后,形参的变化不会影响实参的变化。

第6题:

下列函数过程的作用是计算x和y的最大公约数。请填空。

Private Sub Command1_ Click()

Dim x As Integer, y As Integer, Result As Integer

x = InputBox (“请输入第一个数”)

y = InputBox (“请输入第二个数”)

Result =______

Print x; "和"; y; "的最大公约数为: "; Result

End Sub

Private Function GYS (ByVal A As Integer, ByVal B As Integer)

Dim T As Integer

T = A Mod B

Do While ______

A = B

B = T

T = A Mod B

Loop

______

End Function


正确答案:GYS (xy) T>0 GYS=B
GYS (x,y) , T>0 , GYS=B

第7题:

在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub subl(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) z=x*x+y*y End Sub Private Sub Command1_Click() Dim a As Integer a=8 Call subl(1, 2,a) Print a End Sub 程序运行后,单击命令按钮,则窗体下显示的内容是______。

A.8

B.2

C.5

D.11


正确答案:A
解析:因为Subl过程的形参都是传值传送,所以在其内的所有计算结果都不将返回,并不影响对应的实参值,变量a的值并没有改变,仍然是8。

第8题:

有下列函数过程:Function funl(ByVal x As Integer, ByVal y As Integer) Do While y <> 0 Reminder=x Mody x=y y=reminder Loop Funl=xEnnd Function在下列按钮单击事件中调用该函数,则该程序的运行结果是 Privatr Sub Commandl_Click() Dim a As Integer Dim b As Integer a=100 b=25 x=funl(a,b) Print x End SubA.0 B.25 C.50 D.100


正确答案:D
【解析】可以通过两种方式来传递参数,即按值传递参数和按地址传递参数。
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用BayVal关键字指出参数是按值来传递的。按地址传递参数使过程用变量的内存地址去访问实际变量的内容,在将变量传递给过程时,通过过程可永远改变变量值。默认时是按地址传递参数。

第9题:

以下过程的定义中,( )是错误的。

A、Public Sub Sum(x ; y)

B、Public Sub Sum(ByVal x, ByVal y)

C、Public Sub Sum(x As Integer,y As Integer)

D、Public Sub Sum(x%, y%)


参考答案:A

第10题:

有以下函数过程: Function Gys (ByVal x As Integer, ByVal y As Integer) As Integer Do While y<>0 Reminder = x Mod y x = y y= Reminder Loop Gys=x End Function 以下是调用该函数的事件过程,该程序的运行结果是 Private Sub Command1_Click() Dim a As Integer Dim b As Integer a = 50 b = 10 x=Gys (a,B)Print x End Sub

A.0

B.10

C.50

D.100


正确答案:B
解析:本首先要读懂Gys函数过程的意思,Gys函数过程返回参数y的值,具体过程是先令参数x的值为y的值,y的值为xMody的值,再令Gys值为x的值,据此本题的正确结果为10,选B。

更多相关问题