回 帖 发 新 帖 刷新版面

主题:本着科学的精神,遇到问题还是要发贴的。。。

这道题非常简单:
题目:编一个由计算机出题的整数四则运算程序。数的大小(10以内)和四则运算符都由计算机随机给出,每做对一题加10分,并输出“GooD”加以表扬。十题做完输出总分。
程序:
cls
randomize timer
for i=1 to 4
  read c$(i)
next i
data +,-,*,/
for i=1 to 10
  do
    a=int(rnd*10)
    b=int(rnd*9)+1
  loop until a mod b=0 and a>b
  c=int(rnd*4)+1
  print tab(10);a;spc(2);c$(c);spc(2);b;spc(2);"=";
  input ;d
  select case c$(c)
    case "+"
      if a+b=d then gosub 10
    case "-"
这个程序中,随机产生四个算术运算符是随机函数,通过产生随机数到data区中读取运算符。
问题:这里的c$(i)到底属于什么数据结构。从形式上很明显是数组,但是这么并没有先定义,可惜我没有查到有什么资料上说可以不定义的,如果它不是数组结构,而仅仅是4个普通的变量,qb中可以这样使用吗?。就这点困惑,等待答复!

回复列表 (共3个回复)

沙发

在QB里,默认的数组(未经严格定义),默认下标为 0-10
也就是说未定义过的字符串数组 c$( )
从 c$(0) 到 c$(10) 都是合法的, c$(11) 就越界了.

板凳

非常感谢,回答的很准确,这些语句的潜规则。。。不过也怪我看书不仔细。

3 楼

你的程序不是最好的,干吗非要a MOD b=0? 10以内的除法应该能算出来的,比如:
2/4=0.5
3/8=0.375
……
不过b不要是7或者9,免得搞出来循环小数更麻烦。
也不要a-b>0,负数是可以算出来的.
程序改进如下:
CLS
DIM c$(4)
c$(1) = "+": c$(2) = "-": c$(3) = "*": c$(4) = CHR$(246)
FOR i = 1 TO 10
    d = INT(RND * 4) + 1
    DO
      a = INT(RND * 11)
      b = INT(RND * 11)
      IF d = 4 THEN
         IF b <> 0 AND b <> 7 AND b <> 9 THEN EXIT DO
      ELSE
         EXIT DO
      END IF
    LOOP
    PRINT a; c$(d); b; "=";
    INPUT s
    SELECT CASE d
    CASE 1: IF a + b = s THEN PRINT "GOOD": t = t + 10
    CASE 2: IF a - b = s THEN PRINT "GOOD": t = t + 10
    CASE 3: IF a * b = s THEN PRINT "GOOD": t = t + 10
    CASE 4: IF a / b = s THEN PRINT "GOOD": t = t + 10
    END SELECT
NEXT i
PRINT "score:"; t
END

我来回复

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