谁帮帮我一个VB问题,问了很多人都不会!

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:32:12
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x = 1: y = 2: z = 3
Call po1(x, x, z)
Cls
Print x, x, z
Call po1(x, y, y)
Print x, y, y
End Sub

Private Sub po1(x As Integer, y As Integer, z As Integer)
x = 3 * z + 1
y = 2 * z
z = x + y
End Sub
大家给我看看
答案是:6 6 12
7 11 11
为什么不是:12 6 18
7 4 11
就是个!!!帮帮我了!
谢谢!我想我的问题没说清楚,这是在书上看到的一道题,应该是参数数的传递问题,可能的话能不能把参数的传递给我讲讲!!!!

'第一次调用po1(x,x,z)即po1(1,1,3)。注意第二个参数为x,意味著它会被赋值2次
Private Sub po1(x As Integer, y As Integer, z As Integer)
'此时x=1,y=1,z=3
'
'x第一次赋值x=3*3+1=10
x = 3 * z + 1
'
'此自定义函数的y对应著调用的第二个参数x,y=2*3=6
'囘传至Command1_Click时,会令第二个参数x=y,即x第二次被重新赋值
y = 2 * z
'
'z=6+6=12
z = x + y
End Sub
'
'
'第二次调用po1(x,y,y) 同理,注意第三个参数为y,最终结果是y=z
'建议自定义函数时,变量的命名要与其它过程变量有所区别,
'避免造成混肴

你定义的 X,Y,Z不是公共变量
通过 po1 所设置的 x y z 和 command1 里的 x,y,z不是同一个,所以结果不一样!

如楼上的说的量样的..
如果你要想X,Y,Z 的值是一样的话就定义公共定量吧.
到模块里去定义.这样X,Y,Z的值就不会自动改变啦..
Dim x As Integer, y As Integer, z As Integer
x = 1: y = 2: z = 3
拿这个到模块里去定义就可以啦...
over