回 帖 发 新 帖 刷新版面

主题:请帮我解释一下这个程序(读程题)

CLS
t=3
GOSUB a1
PRINT t
END
a1:
DO
  GOSUB a2
a2:
  t=t-1
  IF t<=0 THEN RETURN
LOOP
这个程序的输出结果为什么是-3????

回复列表 (共3个回复)

沙发

我不知道我这样子解释你是否能听得明白

1 CLS
2 t=3
3 GOSUB a1
4 PRINT t
5 END
 a1:
7 DO
8  GOSUB a2
 a2:
10  t=t-1
11  IF t<=0 THEN RETURN
12 LOOP

说明一下运行顺序:           执行后t的值
1-2-3       第一个跳转断点      t=3
-a1-7-8     第二个跳转断点      t=3
-a2-10      t=t-1               t=2
-11-12-7-8  第三个跳转断点      t=2
-a2-10      t=t-1               t=1
-11-12-7-8  第四个跳转断点      t=1
-a2-10      t=t-1               t=0
-11         if t<=0条件成立,Return上一个调用断点(第四个跳转断点)
-8          第四个Gosub跳转执行完毕,执行到下一行
-a2-10      t=t-1               t=-1
-11         if t<=0条件成立,Return上一个调用断点(第三个跳转断点)
-8          第三个Gosub跳转执行完毕,执行到下一行
-a2-10      t=t-1               t=-2
-11         if t<=0条件成立,Return上一个调用断点(第二个跳转断点)
-8          第二个Gosub跳转执行完毕,执行到下一行
-a2-10      t=t-1               t=-3
-11         if t<=0条件成立,Return上一个调用断点(第一个跳转断点)
-3          第一个Gosub跳转执行完毕,执行到下一行
-4          Print t             t=-3
-5          程序结束

Mato,我教你一个办法,
1. 打开QBX,输入你的代码.
2. 按顺序按键盘:  <Alt>  <D> <Enter> <t> <Enter> <F8> <F8> <F8> <F8> <F8> ......
相信你比我聪明.你一定会领会的.

板凳

[color=008000]Mato,我教你一个办法,
1. 打开QBX,输入你的代码.
2. 按顺序按键盘:  <Alt>  <D> <Enter> <t> <Enter> <F8> <F8> <F8> <F8> <F8> [color=008000]......[/color]相信你比我聪明.你一定会领会的[/color].
[color=800000]这是检验程序.
前面MOZ已经说了,和我要说的大致相同.[/color]  
  File  Edit  View  Search  Run  Debug  Calls  Utility  Options
打开[color=800000]DEBUG[/color],选种 [color=800000]ADD WATCH [/color]输入检验的变量.
[color=FF0000]按F8[/color]或用F9选种全文,按F5

3 楼


[em13]......这题好简单,是0

我来回复

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