我的程序中有这个变量声明:
X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"
现在我想要的是随机选择其中一个和PRINT
它。但是怎么做呢?
答案 0 :(得分:4)
我的BASIC非常生疏,但你应该能够使用类似的东西:
10 X$ = "MAGENTA"
20 Y$ = "CYAN"
30 Z$ = "TAN"
40 A$ = "KHAKI"
50 N = INT(RND(1) * 4)
60 IF N = 0 THEN PRINT X$
70 IF N = 1 THEN PRINT Y$
80 IF N = 2 THEN PRINT Z$
90 IF N = 3 THEN PRINT A$
或者,将其放在子程序中以便重复使用代码:
10 X$ = "MAGENTA"
20 Y$ = "CYAN"
30 Z$ = "TAN"
40 A$ = "KHAKI"
50 GOSUB 1000
60 PRINT RC$
70 END
1000 TV = INT(RND(1) * 4)
1010 IF TV = 0 THEN RC$ = X$
1020 IF TV = 1 THEN RC$ = Y$
1030 IF TV = 2 THEN RC$ = Z$
1040 IF TV = 3 THEN RC$ = A$
1050 RETURN
当然,你可能应该使用数组来做这类事情,所以你可以使用:
10 DIM A$(3)
10 A$(0) = "MAGENTA"
20 A$(1) = "CYAN"
30 A$(2) = "TAN"
40 A$(3) = "KHAKI"
50 PRINT A$(INT(RND(1)*4))
答案 1 :(得分:1)
以上答案是正确而全面的。
另一方面,这个答案没有,但是我上个月实际上在做Commodore BASIC的一点工作,并决定有时候字符串索引可能会有用,所以这是一个非答案,它重新构造了您的问题
100 X$ = "MAGENTACYAN TAN KHAKI "
110 PRINT MID$(X$,INT(RND(1)*4)*7, 7)
此代码获取从0到3的随机int,然后使用它在包含所有四个条目的单个字符串中查找起始索引,每个条目都被填充(必要时)为7个字符。之所以需要填充,是因为MID $的最终参数是要提取的子字符串的长度。
为什么要生?
何时考虑在数组上建立索引:
(1) when your string data is near-uniform length, and
(2) when you have a LOT of little strings.
如果这两个条件为真,则包括数据在内的完整代码将更加紧凑,并且由于分配了更少的指针而占用了更少的内存。
P.S。如果您发现我犯了一个错误,那就加分了!
答案 2 :(得分:0)
这是另一种实现方法,对输出使用一个变量,然后根据[1..4]范围内的随机数对ON..GOSUB进行设置。
10 ON INT(RND(1)*4+1) GOSUB 100,110,120,130
20 PRINT A$
30 END
100 A$ = "MAGENTA":RETURN
110 A$ = "CYAN":RETURN
120 A$ = "TAN":RETURN
130 A$ = "KHAKI":RETURN