我在我的程序中有这个变量声明:
X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"现在我想要的是随机选择其中一个然后PRINT它。但如何做到这一点呢?
发布于 2010-10-12 10:49:15
我的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))发布于 2019-10-16 01:21:12
上面的答案是正确和全面的。
从另一方面来说,答案是否定的,但我上个月实际上做了一点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.
如果这两个条件为真,那么完整的代码(包括数据)会更紧凑,并且由于分配的指针更少,占用的内存也更少。
另外,如果你发现我犯了一个错误,我会给你加分!
发布于 2019-10-22 22:23:08
这是另一种方法,使用一个变量作为输出,并使用ON..GOSUB根据1..4范围内的随机数设置输出。
`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`
https://stackoverflow.com/questions/3911295
复制相似问题