一道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
求第一二行的输出结果。。。
展开
 我来答
风光青蛙
2011-10-11 · TA获得超过153个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:113万
展开全部
关键在于这条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隐藏了指针技术。
上海华然企业咨询
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步... 点击进入详情页
本回答由上海华然企业咨询提供
匿名用户
2011-10-11
展开全部
VB 中运行一下,不就知道了。 懒!!!

第一行: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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式