一道vb题目
DimxAsInteger,yAsIntegerPrivateSubform_click()DimaAsInteger,bAsIntegera=6:b=4Callsub1...
Dim x As Integer, y As Integer
Private Sub form_click()
Dim a As Integer, b As Integer
a = 6: b = 4
Call sub1(a, b)
Print a, b
Print x, y
End Sub
Private Sub sub1(m As Integer, n As Integer)
Dim y As Integer
x = m + 2: y = n - 3
m = fun1(x, fun1(y, x))
n = x + y
End Sub
Private Function fun1(a As Integer, ByVal b As Integer) As Integer
x = a + 2: y = b - 3
fun1 = x - y
End Function
求第一二行的输出结果。。。 展开
Private Sub form_click()
Dim a As Integer, b As Integer
a = 6: b = 4
Call sub1(a, b)
Print a, b
Print x, y
End Sub
Private Sub sub1(m As Integer, n As Integer)
Dim y As Integer
x = m + 2: y = n - 3
m = fun1(x, fun1(y, x))
n = x + y
End Sub
Private Function fun1(a As Integer, ByVal b As Integer) As Integer
x = a + 2: y = b - 3
fun1 = x - y
End Function
求第一二行的输出结果。。。 展开
2个回答
展开全部
关键在于这条m = fun1(x, fun1(y, x))语句:
VB会先计算fun1(y, x);然后再计算fun1(x, fun1(y, x)) 所以函数fun1(x, fun1(y, x)) 中的前面的形参X的值是不确定的,因为fun1(y, x)会改变X的值,你不能将fun1(x, fun1(y, x)) = fun1(8, fun1(1, 8)),这是运算顺序,这个你要明白。
第一次运算fun1(y, x), 实际上是fun1(1, 8) =-2,没有问题吧,但是X的值己改变了,x = a + 2=3
,同时Y的值也改变了y = b - 3=5,所以当fun1(1, 8) =-2运行完毕后,函数fun1(x, fun1(y, x)) 己变成了fun1(3, -2) .所以m=fun1(3, -2)=10,第二次运算结束后,x = a + 2=3+2=5, y = b - 3=-2-3=-5,注意函数Function fun1(a As Integer, ByVal b As Integer) As Integer 中的形参ByVal b变量b是ByVal是传递值 ,源数据不会被修改 所以在过程sub1中y的值没有被修改y = n - 3
=4-3=1,n=x+y=5+1=6,注意过程sub1中变量y和全局变量y是两个不同的变量。关于函数形参的传值方式你最好去看C/C++,在VB中我认为是不太好理解的,因为VB隐藏了指针技术。
VB会先计算fun1(y, x);然后再计算fun1(x, fun1(y, x)) 所以函数fun1(x, fun1(y, x)) 中的前面的形参X的值是不确定的,因为fun1(y, x)会改变X的值,你不能将fun1(x, fun1(y, x)) = fun1(8, fun1(1, 8)),这是运算顺序,这个你要明白。
第一次运算fun1(y, x), 实际上是fun1(1, 8) =-2,没有问题吧,但是X的值己改变了,x = a + 2=3
,同时Y的值也改变了y = b - 3=5,所以当fun1(1, 8) =-2运行完毕后,函数fun1(x, fun1(y, x)) 己变成了fun1(3, -2) .所以m=fun1(3, -2)=10,第二次运算结束后,x = a + 2=3+2=5, y = b - 3=-2-3=-5,注意函数Function fun1(a As Integer, ByVal b As Integer) As Integer 中的形参ByVal b变量b是ByVal是传递值 ,源数据不会被修改 所以在过程sub1中y的值没有被修改y = n - 3
=4-3=1,n=x+y=5+1=6,注意过程sub1中变量y和全局变量y是两个不同的变量。关于函数形参的传值方式你最好去看C/C++,在VB中我认为是不太好理解的,因为VB隐藏了指针技术。
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
2011-10-11
展开全部
VB 中运行一下,不就知道了。 懒!!!
第一行:10 6
第二行:5 -5
第一行:10 6
第二行:5 -5
追问
不好意思 我的问题意思是:怎么分析这些代码得到的。。。。我都打得这些代码出来了,你说还能懒到这个地步吗 = =
追答
1:sub1(6, 4)
即x=m+2=6+2=8; y=n-3=4-3=1;
2: m = fun1(x, fun1(y, x))
先计算里面的fun1(y, x)
即fun1(y,x)=fun1(1,8)={x=3: y=5: fun1=-2}=-2
再计算fun1(x, -2)=fun1(3, -2)={x=5, y=-5, fun1=10}=10
sub1里面 x= 8 y= 1
fun1( 1 , 8 ) 里面 x = 3 ; y = 5 ; fun1 = -2
fun1( 5 , -2 ) 里面 x = 5 ; y = -5 ; fun1 = 10
给你个参考:添加了两个调试输出。。。
Dim x As Integer, y As Integer
Private Sub form_click()
Dim a As Integer, b As Integer
a = 6: b = 4
Call sub1(a, b)
Print a, b
Print x, y
End Sub
Private Sub sub1(m As Integer, n As Integer)
Dim y As Integer
x = m + 2: y = n - 3
Debug.Print "sub1里面 x="; x, "y="; y
m = fun1(x, fun1(y, x))
n = x + y
End Sub
Private Function fun1(a As Integer, ByVal b As Integer) As Integer
x = a + 2: y = b - 3
Debug.Print "fun1("; a; ", "; b; ") 里面 x = "; x, "; y = "; y, "; fun1 = "; x - y; ""
fun1 = x - y
End Function
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询