版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六讲第六讲 数组的定义及使用数组的定义及使用6.1 6.1 数组的定义数组的定义l数组是类型相同的一组变量的有序集合。数组是类型相同的一组变量的有序集合。 任何一组类型相同且有序的数据都可使用数组存储。任何一组类型相同且有序的数据都可使用数组存储。 如如: :保存保存3030名学生成绩数据的一组变量:名学生成绩数据的一组变量:s1,s2,s3,s1,s2,s3,s30,s30 REAL s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15 REAL s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s
2、15 这组变量可用数组这组变量可用数组s s取代,数组元素取代,数组元素s(1),s(2),s(1),s(2),s(15),s(15),分别取代分别取代s1,s2,s1,s2,s15,s15。 REAL s(15)REAL s(15)l数组分静态数组和动态数组数组分静态数组和动态数组n静态数组:在编译时分配存储单元,运行时数组大小不能改变。静态数组:在编译时分配存储单元,运行时数组大小不能改变。 INTEGER num(5) !INTEGER num(5) !在编译时分配在编译时分配5 5个数组元素存储单元个数组元素存储单元(20(20字节字节) )n动态数组:在程序运行时分配存储单元,运行时
3、数组大小可改变。动态数组:在程序运行时分配存储单元,运行时数组大小可改变。 INTEGERINTEGER,ALLOCATABLE : num(:) !ALLOCATABLE : num(:) !在编译时不分配存储单元在编译时不分配存储单元 ALLOCATEALLOCATE(num(5) !num(5) !在运行时分配在运行时分配5 5个数组元素存储单元个数组元素存储单元(20(20字节字节) )l数组大小为数组元素个数。数组大小为数组元素个数。l数组声明有数组声明有3 3种方式:类型声明语句、种方式:类型声明语句、DIMENSIONDIMENSION语句、语句、DIMENSIONDIMENSI
4、ON属性属性l使用类型声明语句进行数组声明。一般格式:使用类型声明语句进行数组声明。一般格式: : : INTEGERREALCOMPLEXCHARACTERLOGICALINTEGERREALCOMPLEXCHARACTERLOGICAL ()=)=, ( ()=)= , : (/,2,/n/)n声明下界为声明下界为1 1的数组。的数组。n声明数组下界不为声明数组下界不为1 1的数组。的数组。n声明赋初值的数组及动态数组。声明赋初值的数组及动态数组。l数组元素个数计算。数组元素个数计算。REAL a(L1:U1,L2:U2,REAL a(L1:U1,L2:U2,Ln:Un) !,Ln:Un)
5、 !数组元素个数数组元素个数m m按以下公式计算:按以下公式计算:m=(U1-L1+1)(U2-L2+1)m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)(Un-Ln+1)如:如:REAL arr(2:5,-1:2,4),M=(5-2+1)REAL arr(2:5,-1:2,4),M=(5-2+1) (2-(-1)+1)(2-(-1)+1) (4-1+1)=64(4-1+1)=64。INTEGERINTEGER(1 1)num(3),day(12) !num(3),day(12) !声明声明KINDKIND值为值为1 1的二个整型数组的二个整型数组INTEGER N(4),M(5,8
6、) !INTEGER N(4),M(5,8) !声明声明KINDKIND值为值为4 4的二个整型数组的二个整型数组REAL score(4),prices(15) !REAL score(4),prices(15) !声明二个单精度实型数组声明二个单精度实型数组REAL(8) dr(5) !REAL(8) dr(5) !声明一个双精度实型数组声明一个双精度实型数组COMPLEX comp(3) !COMPLEX comp(3) !声明一个单精度复型数组声明一个单精度复型数组CHARACTERCHARACTER* *10 country(15) !10 country(15) !声明一个长度为声
7、明一个长度为1010的字符型数组的字符型数组LOGICAL L(5) !LOGICAL L(5) !声明一个声明一个KINDKIND值为值为4 4的逻辑型数组的逻辑型数组INTEGER count(-3:3) !INTEGER count(-3:3) !声明一个一维整型数组,有声明一个一维整型数组,有7 7个数组元素个数组元素INTEGER week(0:6) !INTEGER week(0:6) !声明一个一维整型数组,有声明一个一维整型数组,有7 7个数组元素个数组元素REAL sc(-5:-1,5:9) !REAL sc(-5:-1,5:9) !声明一个二维实型数组,有声明一个二维实型数
8、组,有2525个数组元素个数组元素REAL ar(2:5,-1:2,4) !REAL ar(2:5,-1:2,4) !声明一个三维实型数组,有声明一个三维实型数组,有6464个数组元素个数组元素INTEGER : num(3)=(/12,23,34/),day(12)INTEGER : num(3)=(/12,23,34/),day(12)REAL : a(-1:3)=(/1.5,2.5,3.5,4.5,5.5/)REAL : a(-1:3)=(/1.5,2.5,3.5,4.5,5.5/)INTEGER : X(3,4)=(/1,2,3,4,5,6,7,8,9,10,11,12/)INTEGE
9、R : X(3,4)=(/1,2,3,4,5,6,7,8,9,10,11,12/)REAL,ALLOCATABLE:SUM(:),AVER(:,:),B(:)REAL,ALLOCATABLE:SUM(:),AVER(:,:),B(:)READ(READ(* *, ,* *) M,N) M,NALLOCATE(SUM(0:N),AVER(M,N),B(-1:M)ALLOCATE(SUM(0:N),AVER(M,N),B(-1:M)DEALLOCATEDEALLOCATEl使用使用DIMENSIONDIMENSION语句进行数组声明。一般格式:语句进行数组声明。一般格式:DIMENSIONDIME
10、NSION DIMENSION 例:例: INTEGER day,countINTEGER day,count CHARACTER CHARACTER* *10 country10 country LOGICAL L LOGICAL L DIMENSION num(3),day(12),ihour(5:7),count(-3:3) DIMENSION num(3),day(12),ihour(5:7),count(-3:3) DIMENSION sc(-5:-1,5:9),ar(2:5,-1:2,4) DIMENSION sc(-5:-1,5:9),ar(2:5,-1:2,4) DIMENSI
11、ON country(15),L(5) DIMENSION country(15),L(5)DIMENSIONDIMENSION语句中不能出现语句中不能出现:,:,不能给数组赋初值。不能给数组赋初值。l使用类型声明语句和使用类型声明语句和DIMENSIONDIMENSION属性进行数组声明。一般格式:属性进行数组声明。一般格式: ,DIMENSION(,DIMENSION( ) : ) : 例:例: INTEGERINTEGER,DIMENSION(2):num,total,score(10:15),price(4,5)DIMENSION(2):num,total,score(10:15),p
12、rice(4,5) REAL,DIMENSION(-5:-1,5:9) : sc,jp REAL,DIMENSION(-5:-1,5:9) : sc,jp CHARACTER CHARACTER* *10,DIMENSION(15) : country,name(10)10,DIMENSION(15) : country,name(10) INTEGER INTEGER,DIMENSION(5) : S=(/45,78,85,55,95/)DIMENSION(5) : S=(/45,78,85,55,95/)必须出现必须出现:,:,可给数组赋初值。可给数组赋初值。6.2 6.2 数组引用方法数
13、组引用方法l数组声明只是确定了一个数组的类型、维数和元素个数数组声明只是确定了一个数组的类型、维数和元素个数。l在程序中需要在程序中需要引用引用数组的某个元素、某些元素和全部元素数组的某个元素、某些元素和全部元素, ,或者给数组或者给数组元素元素赋予赋予新的值新的值, , l数组元素可参与某种运算数组元素可参与某种运算, ,可作为操作数放在表达式中。可作为操作数放在表达式中。 示例程序:示例程序: INTEGER : num(-2:2),sum=0INTEGER : num(-2:2),sum=0 num(-2)num(-2)=100;=100;num(-1)num(-1)=200;=200;
14、num(0)num(0)=300;=300;num(1)num(1)=400;=400;num(2)num(2)=500=500 av1=( av1=(num(-2)num(-2)+ +num(-1)num(-1)+ +num(0)num(0)+ +num(1)num(1)+ +num(2)num(2)/5.0)/5.0 DO I= -2,2 DO I= -2,2 sum=sum+ sum=sum+num(I)num(I) ENDDO ENDDO av2=sum/5.0 av2=sum/5.0 WRITE( WRITE(* *, ,* *) av1=,av1) av1=,av1 WRITE(
15、WRITE(* *, ,* *) av2=,av2) av2=,av2 END ENDl数组数组引用一般格式:引用一般格式: (1 1) 按下标引用按下标引用 数组名(数组下标数组名(数组下标,数组下标数组下标 ) 数组下标数组下标算术表达式算术表达式:算术表达式算术表达式 (2 2) 按整体引用按整体引用 数组名数组名 如:如:INTEGER id(10)INTEGER id(10) id=25 id=25 ! !等价等价id(1)=25;id(2)=25;id(1)=25;id(2)=25;id(10)=25;id(10)=25 id(1)=2 id(1)=2* *id(1); id(5)
16、=3id(1); id(5)=3* *id(5); id(10)=2id(5); id(10)=2* *id(2)+3id(2)+3* *id(9)id(9) id(2:4)=15; id(6:9)=35 id(2:4)=15; id(6:9)=35 id(:10)=999 id(:10)=999 ! !等价于等价于id(1:10)=999id(1:10)=999步骤步骤 id(1) id(2) id(3) id(4) id(5) id(6) id(7) id(8) id(9) id(10)id(1) id(2) id(3) id(4) id(5) id(6) id(7) id(8) id(9
17、) id(10) 1 25 25 25 25 25 25 25 25 25 25 1 25 25 25 25 25 25 25 25 25 25 2 50 25 25 25 75 25 25 25 25 125 2 50 25 25 25 75 25 25 25 25 125 3 50 15 15 15 75 35 35 35 35 125 3 50 15 15 15 75 35 35 35 35 125 4 999 999 999 999 999 999 999 999 999 999 4 999 999 999 999 999 999 999 999 999 999l数组引用要保证下标值落
18、在下界和上界之间数组引用要保证下标值落在下界和上界之间,否则将产生严重后果。,否则将产生严重后果。l使用使用内部函数(内部函数(UBOUNDUBOUND、LBOUNDLBOUND)分别分别检测数组的检测数组的上上界和界和下下界。界。 UBOUND UBOUND(UBOUND(数组名数组名 , DIM= , DIM=) LBOUND LBOUND(LBOUND(数组名数组名 , DIM= , DIM=) 可检测某一维可检测某一维( (指定维数,有第二参数指定维数,有第二参数) ),结果为整数。,结果为整数。 也可检测所有维也可检测所有维( (不指定维数,缺第二参数不指定维数,缺第二参数) ),结
19、果为一维整型数组。,结果为一维整型数组。 例:例:INTEGER num(-5:-1,11:15,-2:2)INTEGER num(-5:-1,11:15,-2:2) LBOUND(num,1) LBOUND(num,1)等于等于-5-5 UBOUND(num,1) UBOUND(num,1)等于等于-1-1 LBOUND(num) LBOUND(num)等于(等于(/-5/-5,1111,-2/-2/) UBOUND(num)UBOUND(num)等于(等于(/-1/-1,1515,2/2/) 6.3 6.3 数组的逻辑结构和存储结构数组的逻辑结构和存储结构l数组数组是复杂数据结构,有逻辑结
20、构和存储结构两大特征。是复杂数据结构,有逻辑结构和存储结构两大特征。l数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。l数组存储结构:数组是一个与计算机实现有关的具体的数据表数组存储结构:数组是一个与计算机实现有关的具体的数据表( (线性表线性表),),连续存储连续存储在若干存储单元中。在若干存储单元中。 对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。 对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表。对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表
21、。 对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。l数组说明:数组说明:INTEGER aINTEGER a(9 9)。)。l逻辑结构、存储结构、相互关系:逻辑结构、存储结构、相互关系:逻辑结构逻辑结构存储结构存储结构 a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9)a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9)a(1),a(2),a(3),a(4),a(
22、5),a(6),a(7),a(8),a(9)l数组说明:数组说明:INTEGER aINTEGER a(3 3,4 4)。)。l逻辑结构、存储结构、相互关系:逻辑结构、存储结构、相互关系:l数组说明:数组说明:INTEGER aINTEGER a(3 3,2 2,4 4)。)。l逻辑结构、存储结构、相互关系:逻辑结构、存储结构、相互关系:6.4 6.4 数组的输入输出数组的输入输出l使用使用DODO循环语句输入输出部分或全部数组元素。循环语句输入输出部分或全部数组元素。 INTEGER arrINTEGER arr(3 3,4 4)DO i=1,3 DO i=1,3 ! !输入全部元素输入全部
23、元素 DO j=1DO j=1,4 4 READ( READ(* *, ,* *) arr) arr(i i,j j) ENDDOENDDOENDDOENDDODO i=1,3 DO i=1,3 ! !输出全部元素输出全部元素 DO j=1DO j=1,4 4 WRITE( WRITE(* *, ,* *) arr) arr(i i,j j) ENDDOENDDOENDDOENDDO注意:每行输入输出一个元素值注意:每行输入输出一个元素值l使用使用隐含隐含DODO循环输入输出部分或全部数组元素。循环输入输出部分或全部数组元素。 INTEGER arr1INTEGER arr1(8 8),),a
24、rr2(3,4)arr2(3,4)READ(READ(* *, ,* *) (arr1) (arr1(I I),I=1,8,2) ,I=1,8,2) ! !输入第输入第1 1、3 3、5 5、7 7数组元素数组元素READ(READ(* *, ,* *) (arr1) (arr1(I I),I=1,8) ,I=1,8) ! !输入全部元素输入全部元素WRITE(WRITE(* *, ,* *) (arr1) (arr1(I I),I=1,8,2) ,I=1,8,2) ! !输出输出1 1、3 3、5 5、7 7数组元素数组元素WRITE(WRITE(* *, ,* *) (arr1) (arr
25、1(I I),I=1,8) ,I=1,8) ! !输出全部元素输出全部元素READ(READ(* *, ,* *) (arr2) (arr2(I,JI,J),J=1,4),I=1,3) ,J=1,4),I=1,3) ! !输入全部元素输入全部元素WRITE(WRITE(* *, ,* *) (arr2) (arr2(I,JI,J),J=1,4),I=1,3) ,J=1,4),I=1,3) ! !输出全部元素输出全部元素l使用使用数组名、数组片段数组名、数组片段输入输出部分或全部数组元素。输入输出部分或全部数组元素。 INTEGER arr1INTEGER arr1(8 8),),arr2(3,
26、4)arr2(3,4)READ(READ(* *, ,* *) (arr1) (arr1(I I:I I),I=1,8,2),I=1,8,2) ! !输入第输入第1 1、3 3、5 5、7 7数组元素数组元素READ(READ(* *, ,* *) arr1 ) arr1 ! !按存储结构输入全部元素按存储结构输入全部元素WRITE(WRITE(* *, ,* *) (arr1) (arr1(I I:I I),I=1,8,2),I=1,8,2) ! !输出输出1 1、3 3、5 5、7 7数组元素数组元素WRITE(WRITE(* *, ,* *) arr1 ) arr1 ! !按存储结构输出
27、全部元素按存储结构输出全部元素READ(READ(* *, ,* *) arr2 ) arr2 ! !按存储结构输入全部元素按存储结构输入全部元素WRITE(WRITE(* *, ,* *) arr2 ) arr2 ! !按存储结构输出全部元素按存储结构输出全部元素使用使用DO循环语句输入输出数组示例循环语句输入输出数组示例 例例6.16.1:已知矩阵已知矩阵A,A,输入矩阵数据并转置输出该矩阵。输入矩阵数据并转置输出该矩阵。 12.5 23.8 54.2 78.912.5 23.8 54.2 78.9 92.4 45.3 0.0 24.4 92.4 45.3 0.0 24.4 84.2 32
28、.8 72.8 43.2 84.2 32.8 72.8 43.2PROGRAM exam6_1PROGRAM exam6_1PARAMETER(M=3,N=4)PARAMETER(M=3,N=4)REAL A(M,N)REAL A(M,N)WRITE(WRITE(* *,( ,( 以行为主输入以行为主输入,I3, ,I3, 个矩阵数据个矩阵数据, ,每行输入一个数据:每行输入一个数据:) M) M* *N NDO i=1,MDO i=1,M DO j=1,N DO j=1,N READ( READ(* *, ,* *) A(i,j) A(i,j) ENDDO ENDDOENDDOENDDOEn
29、d programEnd program矩阵矩阵A A输入数据:输入数据:以行为主输入以行为主输入 12 12 个矩阵数据个矩阵数据, ,每行输入一个数据:每行输入一个数据:12.512.523.823.854.254.278.978.992.492.445.345.30024.424.484.284.232.832.872.872.843.243.2输出结果:输出结果:输出转置后数组:输出转置后数组: 12.5 92.4 84.212.5 92.4 84.2 23.8 45.3 32.8 23.8 45.3 32.8 54.2 0.0 72.8 54.2 0.0 72.8 78.9 24.4
30、 43.2 78.9 24.4 43.2 使用隐含使用隐含DO循环输入输出数组示例循环输入输出数组示例 例例6.16.1:已知矩阵已知矩阵A,A,输入矩阵数据并转置输出该矩阵。输入矩阵数据并转置输出该矩阵。 12.5 23.8 54.2 78.912.5 23.8 54.2 78.9 92.4 45.3 0.0 24.4 92.4 45.3 0.0 24.4 84.2 32.8 72.8 43.2 84.2 32.8 72.8 43.2PROGRAM examPROGRAM exam6_1 PARAMETER(M=3,N=4) PARAMETER(M=3,N=4) REAL A(M,N) RE
31、AL A(M,N) WRITE( WRITE(* *, ,“( ( 按逻辑结构输入按逻辑结构输入,I3, ,I3, 个矩阵数据:个矩阵数据:) M) M* *N N READ( READ(* *, ,* *) (A(i,j),j=1,N),i=1,M) (A(i,j),j=1,N),i=1,M) WRITE( WRITE(* *, ,* *) ) 输出转置后数组:输出转置后数组: WRITE(WRITE(* *,( ,F4.1, ) (A(i,j),i=1,M),j=1,N),( ,F4.1, ) (A(i,j),i=1,M),j=1,N)END programEND program矩阵矩阵A A输入数据:输入数据:以行为主输入以行为主输入 12 12 个矩阵数据个矩阵数据, ,每行输入一个数据:每行输入一个数据:12.5 23.8 54.2 78.912.5 23.8 54.2 78.992.4 45.3 0 24.492.4 45.3 0 24.484.2 32.8 72.8 43.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据包络效率评价在高校实验室共享效益分析中的应用课题报告教学研究课题报告
- 内审外审2026年销售合同协议
- 基于生成式AI的初中数学课堂创新教学模式与教师专业成长策略探究教学研究课题报告
- 智能学习环境在小学教育公平保障中的应用与效果分析教学研究课题报告
- 民营企业合作合同2026
- 2025年江西省抚州市政府采购评审专家考试真题含标准答案
- 2026年大庆医学高等专科学校单招职业倾向性考试题库及完整答案详解一套
- 2026年安徽新闻出版职业技术学院单招职业倾向性考试题库附答案详解(巩固)
- 2026年四川财经职业学院单招职业适应性考试题库附参考答案详解(综合卷)
- 2026年安徽工商职业学院单招职业倾向性测试题库及一套完整答案详解
- 职业卫生检测与评价课件
- 小型展销活动方案
- 林长制培训课件
- 2025至2030中国中医药行业市场发展现状及竞争格局与投资风险报告
- 2025河北中考:地理高频考点
- 2025士兵考学科学综合
- TCHSA 089-2024 乳牙及年轻恒牙牙髓切断术专家共识
- 湘教版四年级下册音乐全册教案(湖南文艺出版社)
- 居间服务佣金协议书范本
- 肺炎的中医护理方案
- 齐鲁工业大学《思想道德与法治》2021-2022学年第一学期期末试卷
评论
0/150
提交评论