回 帖 发 新 帖 刷新版面

主题:QB 数组到底有什么作用??

请问各位老师:在QBASIC中,数组到底有什么作用呢?按教材说,数组是用来存储数据的,但从下面的例子来看,用DATA语句不是一样能存储数据吗?

例子:
10 DIM(20)
20 FOR I=1 TO 20 STEP1
30 READ A(I)
40 NEXT I

50 B=A(1):L=A(1)
60 FOR I=2 TO 20 STEP 1
70 IF A(I)<=B THEN 90
80 B=A(I)
90 IF A(I)>=L THEN 110
100 L=A(I)
110 NEXT I
120 PRINT "MAX=";B,"MIN=";L
130 DATA <a1>,<a2>,<a3>,····,<a20>
140 END

从上面的例子可以看出是找出任意20个数中的最大数和最小数,并把它们打印出来,但
我用FOR NEXT循环语句及READ/DATA语句一样能实现,并且程序相对用数组语句来写要
简便及明了一些,所以我对数组到底什么作用就不是很理解了,数组不就是把数据存放在某一个位置吗,而DATA语句同样能实现这个功能啊,为什么要引用数组来存储数据呢?
请各位老师发表一下高见,谢谢!

回复列表 (共4个回复)

沙发

DATA存的数据在程序运行时是不可修改的,而数组是动态的,在编程时用处非常大。

板凳

你的程序里也用到数组了啊.
第10(行号)行漏了数组名 应该是 dim A(20)
有没有用,怎么用,到了你需要用它的时候你就会明白了.

3 楼

关键是READ-DATA语句只能保存目前最新读到的数据,前面的数据会被全部冲掉。如果让你把这20个数由大到小打印出来,我看你用READ-DATA怎么办。

我们可以先从LET和PRINT说起。

如果你的程序要打印INT(a+SQR(b))*ABS(c)/SGN(d)的值以及他的3倍、5倍的值,下面2个程序哪个好?
(1)
LET s=INT(a+SQR(b))*ABS(c)/SGN(d)
PRINT s,s*3,s*5
(2)
PRINT INT(a+SQR(b))*ABS(c)/SGN(d)
PRINT INT(a+SQR(b))*ABS(c)/SGN(d)*3
PRINT INT(a+SQR(b))*ABS(c)/SGN(d)*5

当然是程序(1)好,程序(2)太繁琐了。

所以,READ-DATA不能保留中间值,所以要求保留中间值的话,用READ-DATA语句会非常繁琐,或者根本就不能完成。而用数组可以简单得完成。

4 楼

READ/DATA的数据是常量,而数组中的数据是变量。
[em10][em10][em10][em10][em24]

我来回复

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