作者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
→ lzwei72:大大解的真好 不過z在過程中沒被改過所以仍然是3 10/24 01:27
→ lzwei72:看錯了 把z搞成c sorry 10/24 01:29
推 ClubT:因為你最後是print(a,b,c)在sub沒改到z...所以c還是3沒錯 10/25 11:40
推 ClubT:不然你應該將print(a,b,c)->print(x,y,z)並改寫在sub內 10/25 14:17
推 march20:好想砍喔, 可是 t大已經回文了 @@ 10/26 03:30
推 timfanda35:如果不符合版規...就刪吧@@...回了才看到版規...囧> 10/26 20:19