作者timfanda35 (Joseph Arser)
看板Prob_Solve
标题Re: [问题] 程式解题
时间Tue Oct 23 01:16:49 2007
※ 引述《xxyy (hey)》之铭言:
: 下列程式如果参数传递的方法为Call by address 其输出结果为何
: Sub (x,y,z) main ()
: {x=y+z; {a=1; b=2;c=3
: {y=z-x } call sub(a,b,a+c)
: print (a,b,c);}
: 为何答案(x,y,z)=(6,-2,3)
: 不知有没有po错板 @@
: 我是三类组的门外汉
: 请高手解答
首先宣告a = 1 , b = 2 , c = 3
因为 call sub( a , b ,a+c ) => Sub( x , y , z )
所以在 Sub 函式中
x = a = 1
y = b = 2
z = a + c = 4
接下来 x = y + z
意思是将 x 指定为
y + z 的值
所以 x = y + z
= 2 + 4
= 6
此时 x 已经改变值为 6
所以下一行
y 也是同理
指定为
z - x 的值
y = z - x
= 4 - 6
= -2
Sub函式结束後
x = 6 ,
y = -2 ,
z = 4
如有错还请其他高手不吝指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.213.170
1F:→ lzwei72:大大解的真好 不过z在过程中没被改过所以仍然是3 10/24 01:27
2F:→ lzwei72:看错了 把z搞成c sorry 10/24 01:29
3F:推 ClubT:因为你最後是print(a,b,c)在sub没改到z...所以c还是3没错 10/25 11:40
4F:推 ClubT:不然你应该将print(a,b,c)->print(x,y,z)并改写在sub内 10/25 14:17
5F:推 march20:好想砍喔, 可是 t大已经回文了 @@ 10/26 03:30
6F:推 timfanda35:如果不符合版规...就删吧@@...回了才看到版规...囧> 10/26 20:19