数组.docx
《数组.docx》由会员分享,可在线阅读,更多相关《数组.docx(15页珍藏版)》请在冰豆网上搜索。
![数组.docx](https://file1.bdocx.com/fileroot1/2023-1/10/3aaf0462-f21f-44e1-afe7-84f92ea9b36f/3aaf0462-f21f-44e1-afe7-84f92ea9b36f1.gif)
数组
《BASIC程序设计》数组学案
学习目标:
1、熟练掌握数组的概念及应用
2、理解下标变量与数组的区别,熟练掌握下标变量及应用
3、熟练掌握利用下标变量求极值、排序(顺序比较法,气泡法)、统计分档等程序设计方法与技巧。
基础知识及要点:
数组和下标变量
一、基本概念
数组是一批的有序数据组成的集合。
其中的每个元素称之为数组元素,又称为下标变量。
使用格式:
数组名(下标[,下标]……)
下标变量名(下标[,下标]……)
几点说明:
1、数组名命名规则和变量名一样,必须以开头,其后可以是字母、数字、小数点;也有四种类型,分别是(用尾符表示)。
而下标变量名必须和它所在的数组的数组名一致。
2、下标必须写在括号中,是一个序号,它必须是非负整数,可以有一个或多个,多个下标之间用隔开;最小的下标值为,最大的下标值即是定义数组时给定的下标值。
3、下标的个数决定数组的维数,最多维。
下标值决定数组的大小,也就是数组的容量(即数组元素的个数);每组元素最多个。
例:
一维数组A(m)有个元素。
二维数组A(m,n)有个元素。
三维数组A(m,n,k)有个元素。
4、数组名后的下标值用来确定该数组中的最大下标值,表示数组的大小;而下标变量中的下标用来确定该元素在数组中的位置。
5、下标可以是数值型的常量、变量或表达式。
当下标值为小数时,系统会自动。
二、课堂练习:
1、判断下列哪些是合法的下标变量,并说明它的类型。
①B(5)②$W(3)③C%(A+B)④X(A$)
⑤Y(A%)⑥AI$(2*I,A)⑦E2#(3,5)⑧Z(-5,0)
⑨XY!
(0,1,2)⑩R(3,5)⑾A(B(5))⑿3D(1,2)
不合法的有:
整型:
双精实型:
单精实型:
字符串型:
2、若A=1,B=2,C=3,D=4,X
(1)=2,X
(2)=5,Y
(1)=3,Y92)=-2,
Y(3)=8,求下列各个下标变量的值。
Y
(2)=Y(D-2*A)=Y(Y(A))=
Y(D/C)=X(Y
(1)+Y
(2))=X(X
(1))=
数组说明语句
一、基本知识:
一个数组在使用前一般需要说明数组的、、及。
(一)、定义数组的语句格式是:
数组名(下标)
该语句的功能是:
在内存中开辟存贮单元,以便顺序存放各数组元素的数据,并将该数组所有元素值进行初始化(数值型的为,字符型的是)
几点说明:
1、一个定义语句可以定义多个不同类型的数组,各数组之间要用隔开。
2、数组说明语句中出现的是数组,其它语句中出现的是下标变量。
3、数组应先后,未经DIM定义的数组,系统自动定义:
下标最大值为,最多维。
4、使用下标变量时,下标不可超过数组定义的最大下标值,否则会提示错误信息:
SUBSCRIPTOUTOFRANGE(下标越界)
5、一个程序中一个数组不能重复被定义。
(二)清除数组语句
格式:
ERASE数组名[,数组名]……
作用:
在程序中清除一个或多个数组。
说明:
在清除语句中只能写数组名,不要写下标。
二、补充知识:
1、数组下标值的下界默认为0,也可以将下标值的下界由0改变为1。
语句格式:
OPTIONBASEn
其中的n值只能是0或1两个值,不能是其它数字。
2、QBASIC允许用户自己指定下标的下界,即下标的下界可以不是0或1。
定义格式:
DIM数组名(下标下界TO下标上界)
例:
DIMB(-2TO4)
即定义了一个一维数组B,下标下界为-2,上界为4,共有个元素。
在这种定义格式中,要求下标值的范围是-32768至32767
三、课堂练习:
1、下面四条数组说明语句中语法正确的是()
A、DIMA$(10)B、DEFA(10)
C、DIMA(10)$D、DIMENSIONA(10)
2、语句DIMA(4,5,6)定义的数组元素个数是()
A、15B、120C、210D、456
3、语句10DIMA(20)中,A表示()
A、变量名B、下标变量名C、数组名D、数组元素名
4、语句OPTIONBASE1:
DIMA(3,4)定义的数组元素个数是()
A、任意个B、12C、7D、20
5、语句DIMA(11TO30)所定义的数组有()个元素。
A、11B、20C、30D、330
6、语句DIMDPN#(8,4)所定义的数组的数据类型是型。
7、下列关于数组的说法不正确的是()
A、数组元素的地位和作用与简单变量相当,都可用来存放一个数据。
B、允许在同一数组中同时存放不同类型的数据。
C、数组中各元素在内存中占据一组连续的存储单元。
D、数组与循环结合使用,可以很方便地对大批数据进行处理。
8、下列关于数组建立和引用的说法不正确的是()
A、引用数组元素时,下标值应在建立数组时所指定的范围内。
B、在程序中凡允许简单变量出现的地方,都可以用数组元素代替。
C、在同一个程序中,数组不可以被重复定义。
D、OPTIONBASEn命令中,n除0和1外,还可以是其它数字。
9、下列程序运行后会显示出错信息,出错的原因是()
10X=5
20DIMA(X)
30FORM=1TO7
40A(M)=M+1
50NEXTM
60END
A、数组元素A(M)的下标超出上界
B、数组说明语句不能用变量来定义下标
C、不能用循环变量M进行运算
D、计算机有病毒
10、DIMB(7,8)说明后,B数组最多有()个元素。
A、56B、57C、15D、72
11、在10DIMA(100)语句执行后,数组A的第101个元素是()
A、A(99)B、A(100)C、A(101)D、A(102)
12、指出下列程序中的错误并在相应语句处改正(不得增删语句)
1)10DIMA(10)
20FORI=5TO20
30A(I)=I
40PRINTA(I);
50NEXTI
60END
2)10FORI=1TO20
20INPUTA(I)
30S=S+A(I)
40NEXTI
50PRINTS
60END
3)10I=5:
T=1
20DIMB(I)
30INPUTB(I)
40I=I–1
50T=T*B(I)
60IFI>0THEN20
70PRINTT
80END
13、写出下列程序运行结果:
1)10DIMB(3):
BK=32)10DIMA(5)
20FORK=1TO320FORI=1TO4
30B(K)=K–130A(I)=2*I-1
40PRINTK,B(K),BK40NEXTI
50NEXTK50PRINTA(A(I)+1)
60END60END
巩固训练
(一)
1、下列程序运行输出的结果是()
10FORJ=0TO10
20READA(J)
30NEXTJ
40PRINT“A1=”;A(0)
50DATA1.88,2.55,3.66,6.66,8,77,90.5,0,0,36.5,55.5
60END
A、A(0)=1.88B、55.5C、A1=A(0)D、A1=1.88
2、下列程序运行输出的结果是()
10L=1
20FORK=1TO2
30ONLGOSUB200,300
40L=L+1
50NEXTK
60FORJ=1TO3
70PRINTA(J);
80NEXTJ
90DATA1,2,3
100END
200FORJ=1TO3
210READA(J)
220NEXTJ
230RETURN
300A
(1)=A
(1)+1
310A
(2)=A
(2)+1
320A(3)=A(3)+1
330RETURN
A、123B、234C、345D、456
3、下列程序运行输出的结果是()
10FORJ=0TO10
20READA(10)
30NEXTJ
40PRINT“A0=”;A(0)
50DATA1.88,2.55,3.66,6.66,8.77,90.5,0,0,36.5,55.5,33
60END
A、A0=0B、33C、A0=A(0)D、A0=1.88
4、下列程序运行输出的结果是()
10DIMA(10)
20FORJ=6TO10
30READA(J)
40NEXTJ
50PRINTA(5)+A(6)*A(10)
60DATA1,2,3,4,5
70END
A、5B、25C、1D、显示出错信息
5、阅读下面程序:
10FORI=1TO5
20READCH$(I)
30NEXTI
40B=1:
C=2:
D=3:
E=4
50DATAA,B,C,D,E
60END
执行上述程序后,CH$(C*D-E)的值为。
6、10DIMA(10)
20FORJ=6TO10
30READA(J)
40NEXTJ
50PRINTA(0)+A(A(6)/A(10))
60DATA1,2,3,4,5
70END
上述程序运行后,屏幕输出结果是()
A、0.2B、1.6C、0D、出错信息
7、程序运行结果是()
10FORK=10TO6STEP-1
20READA(K)
30NEXTK
40DATA1,3,5,7,9
50FORJ=3TO7
60PRINTA(J);
70NEXTJ
80END
A、13579B、97531
C、00097D、11111
8、程序运行结果是()
10FORK=10TO6STEP-1
20READA(K)
30NEXTK
40DATA1,3,5,7,9
50FORJ=1TO5
60PRINTA(J);
70NEXTJ
80END
A、13579B、97531
C、00000D、11111
写出下列程序的运行结果
9、10FORJ=1TO1011、10DIMX(4)
20A(J/2)=J20FORK=0TO4
30A(J/2+1)=A(J/2)30X(K)=K*K
40NEXTJ40X(K)=X(K)+K
50FORK=1TO1050PRINTX(K);
60PRINTA(K);60NEXTK
70NEXTK70END
80END
10、10DIMA(8)12、10DIMA(5)
20FORI=1TO820FORI=1TO5
30A(I)=I*2+430A(I)=I*20+2
40NEXTI40PRINTA(I-1),
50PRINTA(6)/A
(2)50NEXTI
60END60END
二维数组
一、基础知识:
高级BASIC语言允许数组可多达255维,二维以上的称为多维数组。
实际应用中一般为一至三维。
二维数组对应一个二维表,它的第一个下标为下标,第二个下标为下标
二、例题分析:
写运行结果
10DIMA(3,4)
20FORI=0TO3
30FORJ=0TO4
40A(I,J)=I+J
50NEXTJ
60NEXTI
70FORI=0TO3
80FORJ=0TO4
90PRINTA(I,J);
100NEXTJ
110PRINT
120NEXTI
130END
三、课堂练习:
写程序运行结果:
10DIMA(5,5)
20K=1
30FORI=1TO5
40FORJ=1TO5
50A(I,J)=K
60K=1-K
70PRINTA(I,J);
80NEXTJ
90PRINT
100NEXTI
110END
巩固训练
(二)
写出下列程序运行结果:
1、10DIMX(2,2)
20FORK=1TO2
30FORJ=1TO2
40IFK=JTHENX(K,J)=1ELSEX(K,J)=0
50NEXTJ
60NEXTK
70FORK=1TO2
80PRINTX(K,1);X(K,2);
90NEXTK
100END
2、10FORJ=1TO3
20FORK=1TO3
30A(J,K)=(J-1)*3+K
40NEXTK,J
50FORJ=2TO3
60FORK=1TO2
70PRINTA(K,J);
80NEXTK,J
90END
3、10DIMA246(3,3)
20FORK=1TO3
30FORJ=1TO3
40A246(K,J)=2*K:
PRINTA246(K,J);
50NEXTJ
60PRINT
70NEXTK
80END
4、10DIMA(3,3)
20FORI=0TO2
30FORJ=1TO3
40A(I,J)=I*3+J
50PRINTA(I,J);
60NEXTJ
70PRINT
80NEXTI
90PRINT
100FORI=1TO3
110FORJ=0TO2
120PRINTA(I,J);
130NEXTJ
140PRINT
150NEXTI
160END
5、10DIMA(2,2)
20FORI=1TO2
30FORJ=1TO2
40READA(I,J)
50NEXTJ,I
60FORI=0TO2
70FORJ=0TO2
80A(I,J)=A(A(I,J),A(J,I))
90PRINTA(I,J);
100NEXTJ
110PRINT
120NEXTI
130DATA1,2,2,1
140END
巩固训练(三)
1、程序运行后,输出下面的结果,请选择正确的内容填空。
()
147
258
369
10FORJ=1TO3
20FORK=1TO3
30A(J,K)=
40PRINTA(J,K);
50NEXTK
60PRINT
70NEXTJ
80END
A、J+KB、(J-1)*3+KC、J+(K-1)*3D、J*K
2、要想输出下列四行三列的矩阵,请把程序补充完整
456
567
678
789
方法一:
方法二:
10DIMA(4,3),B(3,4)
20FORJ=1TO4
30FORK=1TO3
40A(J,K)=J+K
50B(K,J)=
60PRINTB(K,J);
70NEXTK
80PRINT
90NEXTJ
100END
10DIMA(3,4),B(4,3)
20FORJ=1TO3
30FORK=1TO4
40A(J,K)=
50B(K,J)=A(J,K)+2
60NEXTK
70NEXTJ
80FORJ=1TO4
90FORK=1TO3
100PRINTB(J,K);
110NEXTK
120
130NEXTJ
140END
3、下面程序运行后,输出结果如下:
100110120130
200210220230
300310320330
400410420430
10DIMX(4,4)
20FORL=1TO4
30FORJ=1TO4
40X(L,J)=
50PRINTX(L,T);
60NEXTJ
70PRINT
80NEXTL
90END
4、显示杨辉三角,显示10行
1
11
121
1331
……
193684126126843691
5DIMA(10,10)
10FORX=1TO
20PRINTTAB(26);
30FORY=1TOX
40IFY=1ORY=THENA(X,Y)=1:
GOTO
50A(X,Y)=A(X-1,Y)+
60PRINTA(X,Y);
70NEXTY
80
90NEXTX
100END