回 帖 发 新 帖 刷新版面

主题:这个题答案老做不对?

10 p=0
20 x=int(rnd(1)*6)+1
30 if x<>p+1 then 10
40 a(x)=x
50 p=p+1
60 if p<>6 then 20
70 print chr$(a(1)+64),chr$(a(6)+64)
80 end

做不出答案来,原因可能是rnd(1)上,请问答案如何得出

回复列表 (共2个回复)

沙发

10 p=0
20 x=int(rnd(1)*6)+1
30 if x<>p+1 then 10
40 a(x)=x
50 p=p+1
60 if p<>6 then 20
70 print chr$(a(1)+64),chr$(a(6)+64)
80 end

10行-30行: 取一个随机的x, 若x不等于p+1则重新取一个x判断
这和x=p+1有区别么?

板凳

10 p=0
20 x=int(rnd(1)*6)+1
30 if x<>p+1 then 10
40 a(x)=x
50 p=p+1
60 if p<>6 then 20
70 print chr$(a(1)+64),chr$(a(6)+64)
80 end

搂主别嫌弃,我来理解以下你的程序意图。
1.  10~60行:首先p从零开始,产生一个随机数,直到这个数等于p+1
2.  出口为p=5,然后打印
既然这样,运行应该如下:
有效循环次数   p值     x值   执行        60行p值
     1          0       1    a(1)=1         1
     2          1       2    a(2)=2         2
     3          2       3    a(3)=3         3
     4          3       4    a(4)=4         4
     5          4       5    a(5)=5         5
     6          5       6    a(6)=6         6
然后输出两个字符,chr$(a(1)+64),chr$(a(6)+64)
这里a(1)=1,a(6)=6
所以这两个字符就是chr$(65)和chr$(70)
[color=FF0000]输出结果和前面的循环、随机数、运算、判断没有任何关系![/color]

所以,建议本程序简化如下:
10 print chr$(65),chr$(70)
20 end

我来回复

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