回 帖 发 新 帖 刷新版面

主题:请大家帮我分析一个课本例子

DECLARE SUB myswap (m AS INTEGER ,nAS INTEGER)
DECLARE SUB order (x AS INTEGER,y AS INTEGER, z AS INTEGER)
REM main program
DIM a AS INTEGER,b AS INTEGER, c AS INTEGER
INPUT "a,b,c=";a,b,c
PRINT "(1)a=";a,"b=";b,"c=";c
order a,b,c
print "(2)a=";a,"b=";b,"c=";c
end
sub order(x AS integer ,y as integer, z as integer)
if x>y then call myswap(x,y)          在这个子程序时是怎么运算的?
if x>z then call myswap(x,z)          主要分析是怎样传递值的?
if y>z then call myswap(y,z)
end sub
sub myswap (m as integer ,n as integer )
p=m:m=n:n=p
end sub[em18]

回复列表 (共5个回复)

沙发

  QB中与子程序的传值是“按址传递”或“传址调用”,即将变量的地址传到子程序中,这样子程序中相应的变量就与原变量的地址相同。
因而如果在子程序中改变了变量的值,则原变量的值也改变了。

例如,程序中  x,y的传址x ==>m, y ==>n,
在SUB myswap()中改变了m n,就改变了x y

IF x > y THEN CALL myswap(x, y)
SUB myswap (m AS INTEGER, n AS INTEGER)
  p = m: m = n: n = p
END SUB

  如果想要“按值传递”,即只把变量的值传到子程序中,那么在子程序中改变了变量的值,则原变量的值不会改变。
只需在调用子程序时,将变量用小括号括起来如: CALL myswap((x), (y))

板凳

我想要详细的 本例子的分析

3 楼

看书吧...

4 楼

告诉我order a,b,c是什么意思?怎么用order语句啊?

5 楼

掉用名字为 order的子程序啊 abc为 实际参数

我来回复

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