9

我的程序中有这个变量声明:

X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"

现在我想要的是随机选择其中之一PRINT。但是如何做到这一点?

4

3 回答 3

5

我的 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))
于 2010-10-12T02:49:14.950 回答
1

上面的答案是正确和全面的。

另一方面,这个答案不是,但我上个月实际上做了一点 Commodore BASIC 并决定字符串索引有时会很有用,所以这里有一个非答案,可以重新定义你的问题。

100 X$ = "MAGENTACYAN TAN KHAKI " 110 PRINT MID$(X$,INT(RND(1)*4)*7, 7)

此代码获取一个从 0 到 3 的随机整数,然后使用它来查找包含所有四个条目的单个字符串的起始索引,每个条目(在必要时)填充为 7 个字符。该填充是必需的,因为 MID$ 的最后一个参数是要提取的子字符串的长度。

何必?

何时考虑对数组进行索引: (1) when your string data is near-uniform length, and (2) when you have a LOT of little strings.

如果这两个条件为真,那么包括数据在内的完整代码会更紧凑,并且由于分配的指针更少,占用的内存也更少。

PS 如果您发现我犯了一个错误,则可以加分!

于 2019-10-15T17:21:12.327 回答
0

这是另一种方法,使用一个变量作为输出,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

于 2019-10-22T14:23:08.373 回答