【问题标题】:Correct usage of subroutine in commodore basic 4.0?commodore basic 4.0 中子程序的正确用法?
【发布时间】:2014-03-20 21:29:33
【问题描述】:

我有一个用“.”s 填充数组的子程序

在我的主程序中,我试图调用这个子程序,然后打印数组;但是,它似乎不起作用。我认为我错误地调用了子程序?

这是我的代码:

子程序:

1070 dim a$(x,x)
1080 for aa = 0 to x
1090 for bb = 0 to x
2000 a$(x,x)="."
2010 next
2020 next

主要代码:

10 input "please enter a number"; x
20 gosub 1070
30 for i = 1 to x
40 for j = 1 to x
50 print a$(i,j);
60 next
70 print
80 next

运行时没有任何反应;但是当我在一个程序中运行它时(不调用 gosub)它可以工作吗?

有什么帮助吗?

【问题讨论】:

    标签: arrays printing subroutine basic commodore


    【解决方案1】:

    在#2000 行,我相信你想要a$(aa,bb)=".",否则你只是在初始化时敲击相同的位置。

    此外,对于您的问题,可能更重要的是,每个 GOSUB 都需要一个 RETURN 才能回到执行的主线。在你的情况下,这可能是 2030 行。

    【讨论】:

    • 如果您在分配/打印之前打印出循环/数组索引(在 40 和 50、1090 和 2000 之间),它们在哪里结束?都在 X?
    • 根据我在 C128 仿真器上的建议更改(是否足够接近?),我得到了预期的周期平方,但 REDIM'D ARRAY ERROR IN 1070,如果你添加 END,它(显然)会消失第 90 行。
    • @JohnSmith:注意你是如何在子程序中从 0 到 x,而在主程序中从 1 到 x?在这两种情况下,您都应该从 0 到 x-1;在 BASIC 中,第一个索引是 0,最后一个索引是元素个数减一。
    • 其实 Commodore BASIC 有点奇怪。索引从 0 到 X。不过,大多数语言是从 0 到 X-1。
    猜你喜欢
    • 2014-04-26
    • 2014-05-08
    • 2016-11-19
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2015-10-30
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多