八年级信息技术教案:数组(2)
§ 同一模块中,数组和变量可同名,但数组与数组不能同名;
下列情况是不允许的:
DIM a(10,10) 或 DIM a(50,50)
DIM a(15) DIM a%(15)
3、静态数组和动态数组
静态数组——建立数组后,其维数和大小不能改变;
动态数组——在程序执行教程中,可改变大小或者被释放;
QBASIC规定:在DIM 语句中用常数指定下、上界的数组为静态数组,如果用变量(或表达式)指定上下界的数组为动态数组。
(1).重定义语句
REDIM <数组名>(上界)
如:DIM S(20),X(20,30)
……
√REDIM S(50)
×REDIM X(30)
只改变同名数组的大小,但不能改变维数;
(2).释放数组语句
ERASE <数组名>
释放数组所占据的空间;
例1:释放和重定义数组:
n=10
DIM a(n)
FOR i=1 TO n
a(i)=i
PRINT a(i);
NEXT i
ERASE a
REDIM a(16)
FOR i=1 TO 16
a(i)=i
PRINT a(i);
NEXT i
END
说明:
.如果不使用ERASE语句释放数组,不能用DIM语句对同一个数组两次定义;
.用REDIM可改变数组的大小,而不必先用ERASE语句释放数组;
.无论用DIM或REDIM定义一个与原来数组同名的数组,可以改变数组中各维的上下界,而不能改变数组的维数。
(3).数组上、下界函数
LBOUND(<数组名>,<维数>)——下界函数
UBOUND(<数组名>,<维数>)——上界函数
例:
INPUT n,m
DIM a(n TO m)
FOR i=LBOUND(a,1) TO UBOUND(a,1)
a(i)=i
PRINT a(i);
NEXT i
DIM b(10,15)
FOR i=1 TO UBOUND(b,1)
FOR j=1 TO UBOUND(b,2)
b(i,j)=10*i+j
PRINT b(i,j);
NEXT j
NEXT i
END
三、数组的应用
第二节 一字排开-----一维数组
1、一维数组
只有一个下标的数组。
(1).数据统计
例: 输入n个学生的成绩,求平均成绩。
OPTION BASE 1
INPUT "number of students is:";n
DIM s(n)
FOR i=1 to n
INPUT s(i)
sum=sum+s(i)
NEXT i
aver=sum/n
PRINT "aver=";aver
END
例: 输入n个学生的学号和成绩,要求输出平均成绩和高于平均分的学生学号及成绩。
OPTION BASE 1
INPUT "number of students is:";n
DIM num(n),score(n)
FOR i=1 to n
INPUT num(i),score(n)
sum=sum+score(i)
NEXT i
aver=sum/n
PRINT "平均分是:";aver
PRINT "高于平均分的学生有:"
PRINT "学号","成绩"
FOR i=1 TO n
IF score(i)>aver THEN PRINT num(i),score(i)
NEXT i