回 帖 发 新 帖 刷新版面

主题:帮忙运行一下结果

declare  sub a(m,n)
m=5 ;n =4
call a((m),n)
print m,n
end
sub a(m ,n)
s=m
m = s/ n
n =s mod n
end sub[/b][/size]
[center][/center]

回复列表 (共4个回复)

沙发

经过我的大脑运行过,结果应该是 
5       1

板凳

5    1

3 楼

分析一下:
由于在 CALL a((m),n)中m是值传递的,而n是地址传递的,因此m在子程序里就算改变了值也是没有作用的,即只要m在主程序没有改变值,m的值永远是5。再看n,由于n=5 MOD n(5 MOD 4)=1,所以n的值在子程序中变成了1,也就是主程序中的n也变成了1,所以m,n分别为5,1。
不过我不提倡在用值传递变量时在变量外面加上括号,可以用这样的方式:
比如CALL a(b,c$,d)
如果要值传递b和c$,可以写成CALL a(b+0,c$+"",d),不要写成CALL a((b),(c$),d).

4 楼

5       1
别忘了打分

我来回复

您尚未登录,请登录后再回复。点此登录或注册