资源描述:
《[理学]visual fortran90第7章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章数组§7.1数组的基本概念§7.2一维数组§7.3二维数组§7.4数组形式及输入与输出§7.5程序举例§7.6数组作为过程变元§7.7数组运算§7.8多维数组概念简单变量是用来存储一个数据,占据独立的存储单元,彼此之间没有直接联系;数组是用来存储一批类型相同的被称为元素的有序数据,在内存中占据连续的存储单元。例:1,3,5,7,9例:3个学生4门课程的成绩98,89,88,95.578,67,87,6667,75,88,88存储在数组A中存储在数组B中变量与数组的区别§7.1数组的基本概念一维二维一维数组:一行或一列数据二维数组
2、:一页表格三维数组:若干页表格数组的分类维数最多可用到七维数组名:表示一批数据数组元素:是数组中某一个数据的名称数组元素的写法:一维数组:数组名(下标表达式)数组元素与下标二维数组:数组名(行下标表达式,列下标表达式)三维数组:数组名(行下标表达式,列下标表达式,页下标表达式)注意:下标表达式值自动取整数。下标值可正、可负、可为零。下标就是序号例1:1,3,5,7,9存储在数组A中①设1为第一个元素,数组A的各元素为:A(1)、A(2)、A(3)、A(4)、A(5)②设1为第0个元素,数组A的各元素为:A(0)、A(1)、A(2)、A
3、(3)、A(4)③设1为第-1个元素,数组A的各元素为:A(-1)、A(0)、A(1)、A(2)、A(3)例2:98,89,88,95.5存储在数组B中78,67,87,6667,75,88,88设表中行号为1,2,3,列号为1,2,3,4则78为B(2,1)75为B(3,2)数组的维数是根据数组元素使用下标的个数划分的。如果数组元素仅允许使用一个下标,该数组就是一维数组。7.2.1一维数组的引入及说明例7-2求三个整数的和,程序如下:§7.2一维数组P151?PROGRAMMAINIMPLICITNONEINTEGER::A1,A2
4、,A3,SREAD*,A1,A2,A3S=A1+A2+A3PRINT*,SEND如何求15个数的和?30个数的和?……解决办法:1、循环累加2、数组程序中所有数组要先说明类型、名字、大小,再使用。说明方法:用类型说明语句例:INTEGER,DIMENSION(1:5)::A,B(-1:2),C一维数组的说明DIMENSION属性统一说明大小名字后个别说明大小个别优于统一REAL(4),DIMENSION(1:3,1:4)::D=0数组说明的一般格式:类型[([长度说明],[种别说明])],Dimension(d1:d2)[,其它属性说
5、明]::数组名1[=初值][,数组名2[=初值]……]§7.2一维数组例:INTEGER,DIMENSION(1:5)::A,B(-1:2),CREAL(4),DIMENSION(1:3,1:4)::D=01、大小:须写明维数,维界维数——逗号分隔每维维界——d1:d2,称为界偶下界d1,上界d2。2、维长:d2-d1+13、元素个数:各维维长的乘积4、形状:各维维长的序列数组说明的基本概念1、下界d1的值由用户规定,如为1,说明时可省略不写例:REAL,DIMENSION(10)::A2、必须满足d1<=d2,否则数组元素个数为零例
6、:REAL,DIMENSION(5:1)::C3、有时允许d1=d2,数组中只有一个元素4、数组不得重复说明例:INTEGER,DIMENSION(2)::AINTEGER,DIMENSION(2,3)::A数组说明的注意点5、通过下标引用数组元素下标表达式应是整型表达式,允许出现+-*等算数运算符。操作数可以是常数、变量,也可以是简单的内在函数或数组元素,但表达式的值一定是整数。d1<=下标表达式的值<=d2例:A(3*2),A(ABS(-3)),A(5+I),A(A(I))6、数组元素的下标取值必须在相应的维界偶范围内编译不报错,
7、值难以预测数组是具有相同数据类型的多个值的集合,数组的所有元素按一定顺序存储在连续的存储单元中。一维数组只能表示线性顺序,相当于一个一维表,也可以用一维数组表示数学中的向量。一维数组逻辑结构:一行或一列数据一维数组存储结构:下标由小到大例:对如下数组:INTEGER,DIMENSION(1:10)::AA(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)A(9)A(10)一维数组的逻辑结构与存储结构注意:1、分几行输入输出2、每行输入输出几个元素7.2.2一维数组的输入与输出P153例7-3:已知A是整型的一维数组,有15
8、个元素,求它们的和。(表控格式)PROGRAMSUM_DIMIMPLICITNONEINTEGER,DIMENSION(15)::AINTEGER::S=0,IREAD*,ADOI=1,15S=S+A(I)ENDDOPR