一道VB题,求解详细过程,谢谢 50
窗体上有两个文本框Text、Text2,以及一个命令按钮Command1,编写下列程序:DimYAsIntegerPrivateSubCommand1_Click()Di...
窗体上有两个文本框Text、Text2,以及一个命令按钮Command1,编写下列程序:
Dim Y As Integer
Private Sub Command1_Click()
Dim X As Integer
X=2
Text1.Text=p2(p1(X),Y)
Text2.Text=P1(X)
End Sub
Private Function p1(X As Integer) As Integer
X=X+Y
Y=X+Y
p1=X+Y
End Function
Private Function p2(X As Integer,Y As Integer) As Integer
P2=2*X+Y
End Function
为什么单击1次和单击2次命令按钮后,文本框Text1和Text2内的值分别为
10 10
58 58
为什么执行显示第一个text1后,x值是2而不是4呢? 展开
Dim Y As Integer
Private Sub Command1_Click()
Dim X As Integer
X=2
Text1.Text=p2(p1(X),Y)
Text2.Text=P1(X)
End Sub
Private Function p1(X As Integer) As Integer
X=X+Y
Y=X+Y
p1=X+Y
End Function
Private Function p2(X As Integer,Y As Integer) As Integer
P2=2*X+Y
End Function
为什么单击1次和单击2次命令按钮后,文本框Text1和Text2内的值分别为
10 10
58 58
为什么执行显示第一个text1后,x值是2而不是4呢? 展开
4个回答
展开全部
我们先来分析程序吧:
不知道你注意到没有,在第一次进入函数p1时,没有给Y赋值,那么Y的值为0,即Y=0;
然后
①p1(X)的执行情况为:X=2+0;Y=2+0;p1=2+2,得到:p1(X)=4;
p2(p1(X),Y)相当于p2(4,2)执行情况为:p2=2*4+2=10;
所以Text1.text=10;
②对于Text2.text的值就很好算了,因为此时X=2,Y=2;
p1(X)相当于p1(2)执行情况为:X=2+2=4;Y=4+2=6;p1=4+6=10;得到Text2.text=10;
下面同理;
至于你的补充问题,我认为是由于你没有注意到Y刚开始没有赋值造成的。
不知道你注意到没有,在第一次进入函数p1时,没有给Y赋值,那么Y的值为0,即Y=0;
然后
①p1(X)的执行情况为:X=2+0;Y=2+0;p1=2+2,得到:p1(X)=4;
p2(p1(X),Y)相当于p2(4,2)执行情况为:p2=2*4+2=10;
所以Text1.text=10;
②对于Text2.text的值就很好算了,因为此时X=2,Y=2;
p1(X)相当于p1(2)执行情况为:X=2+2=4;Y=4+2=6;p1=4+6=10;得到Text2.text=10;
下面同理;
至于你的补充问题,我认为是由于你没有注意到Y刚开始没有赋值造成的。
展开全部
第一次点击时,X=2 y=0
Text1.Text=p2(p1(X),Y)
分开说,先是p1(X)
即:
X=X+Y ==> x=2+0=2
Y=X+Y==> y=2+0=2
p1=X+Y ==> p1=2+2=4
然后就是:p2(p1(X),Y) ==> P2(4,2)
P2=2*X+Y ==> p2=2*4+2 ==> p2=10
这时text1.text=10
再接着:Text2.Text=P1(X)==>
X=X+Y ==> x=2+2=4
Y=X+Y==> y=4+2=6
p1=X+Y ==> p1=4+6=10
所以:text2.text=10
===================================
再次点击:x=2 y=6
Text1.Text=p2(p1(X),Y)
先是p1(X) 即:
X=X+Y ==> x=2+6=8
Y=X+Y==> y=8+6=14
p1=X+Y ==> p1=8+14=22
然后就是:p2(p1(X),Y) ==> P2(22,14)
P2=2*X+Y ==> p2=2*22+14 ==> p2=44+14=58
再接着:Text2.Text=P1(X)==> 这时x=8
X=X+Y ==> x=8+14=22
Y=X+Y==> y=22+14=36
p1=X+Y ==> p1=22+36=58
所以:text2.text=58
问题补充:
为什么执行显示第一个text1后,x值是2而不是4呢?
因为你:
Dim X As Integer
X=2
所以,X无论什么时候按,开始的值都是2
Text1.Text=p2(p1(X),Y)
分开说,先是p1(X)
即:
X=X+Y ==> x=2+0=2
Y=X+Y==> y=2+0=2
p1=X+Y ==> p1=2+2=4
然后就是:p2(p1(X),Y) ==> P2(4,2)
P2=2*X+Y ==> p2=2*4+2 ==> p2=10
这时text1.text=10
再接着:Text2.Text=P1(X)==>
X=X+Y ==> x=2+2=4
Y=X+Y==> y=4+2=6
p1=X+Y ==> p1=4+6=10
所以:text2.text=10
===================================
再次点击:x=2 y=6
Text1.Text=p2(p1(X),Y)
先是p1(X) 即:
X=X+Y ==> x=2+6=8
Y=X+Y==> y=8+6=14
p1=X+Y ==> p1=8+14=22
然后就是:p2(p1(X),Y) ==> P2(22,14)
P2=2*X+Y ==> p2=2*22+14 ==> p2=44+14=58
再接着:Text2.Text=P1(X)==> 这时x=8
X=X+Y ==> x=8+14=22
Y=X+Y==> y=22+14=36
p1=X+Y ==> p1=22+36=58
所以:text2.text=58
问题补充:
为什么执行显示第一个text1后,x值是2而不是4呢?
因为你:
Dim X As Integer
X=2
所以,X无论什么时候按,开始的值都是2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
text1显示的是X值,text2显示的是Y值,单击一次,执行下列
Dim X As Integer
X=2
Text1.Text=p2(p1(X),Y)
Text2.Text=P1(X)
先执行p2(p1(X),Y)里p1(X),调用函数p1,X是2执行
x=2+0(y是全局变量,没赋值为0)
y=2+0
p1=x+y=2+2
所以p2(p1(X),Y)相当于p2(4,2)调用p2
返回p2=2*x+y=2*2+4=10
所以为10
后面依次力推
Dim X As Integer
X=2
Text1.Text=p2(p1(X),Y)
Text2.Text=P1(X)
先执行p2(p1(X),Y)里p1(X),调用函数p1,X是2执行
x=2+0(y是全局变量,没赋值为0)
y=2+0
p1=x+y=2+2
所以p2(p1(X),Y)相当于p2(4,2)调用p2
返回p2=2*x+y=2*2+4=10
所以为10
后面依次力推
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按答案看应该是个顺序问题,先text1再text2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询