数组详细介绍实用教案_第1页
数组详细介绍实用教案_第2页
数组详细介绍实用教案_第3页
数组详细介绍实用教案_第4页
数组详细介绍实用教案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.1 7.1 数组的概念数组的概念(ginin)(ginin)数组:把具有相同数据类型的一批数据看成一个数组:把具有相同数据类型的一批数据看成一个(y )(y )整体整体INTEGER,PARAMETER:N=5INTEGER,PARAMETER:N=5INTEGER IINTEGER IREAL P(N),AVER=0REAL P(N),AVER=0DO I=1,NDO I=1,N READ( READ(* *, ,* *) P(I) P(I) AVER=AVER+P(I) AVER=AVER+P(I)END DOEND DOAVER=AVER/NAVER=AVER/NDO I,NDO I

2、,N PRINT( PRINT(* *, ,* *) P(I)-AVER) P(I)-AVEREND DOEND DOENDEND第1页/共30页第一页,共30页。7.2 7.2 数组的说明数组的说明(shumng)(shumng)与与引用引用一、数组的说明一、数组的说明(shumng)(shumng)1. 1. 用用DIMENSIONDIMENSION语句语句(yj)(yj)说明数组说明数组格式:格式:DIMENSION DIMENSION 数组说明符数组说明符,数组说明符数组说明符 数组说明符:数组说明符:数组名数组名( (维说明符维说明符 , ,维说明符维说明符 ) )维说明符的一般形式

3、是:维说明符的一般形式是: 维下界维下界: : 维上界维上界下界为下界为1 1时,可以省略不写,冒号也省略时,可以省略不写,冒号也省略 。维下界和上界都只能是维下界和上界都只能是整型整型常量常量表达式。维上界的值表达式。维上界的值必须大于维下界的值。必须大于维下界的值。 第2页/共30页第二页,共30页。例:例:IMPLICIT INTEGER(A-C), REAL(I,J)IMPLICIT INTEGER(A-C), REAL(I,J) DIMENSION B(3:15), IX(10) DIMENSION B(3:15), IX(10)注意注意(zh y)(zh y):(1) DIMENS

4、ION(1) DIMENSION语句在程序单位的可执行语句之前。语句在程序单位的可执行语句之前。(2)(2)用用DIMENSIONDIMENSION语句说明数组时,需用类型语句说明数组时,需用类型(lixng)(lixng)说明语句或说明语句或IMPLICITIMPLICIT语句指明数组的类型语句指明数组的类型(lixng)(lixng),否则数组的类型否则数组的类型(lixng)(lixng)服从服从I-NI-N规则。规则。 例:例:DIMENSION JU(20),NAME(-10:10,1:2)DIMENSION JU(20),NAME(-10:10,1:2) REAL JU REAL

5、JU CHARACTER NAME CHARACTER NAME一维实型数组一维实型数组JUJU,有,有2020个元素。二维字符个元素。二维字符(z f)(z f)型数型数组组NAMENAME,共有,共有4242个元素,每个元素的定义长度为个元素,每个元素的定义长度为1 1。第3页/共30页第三页,共30页。格式格式(g shi)(g shi): 类型符类型符, DIMENSION(, DIMENSION(维说明符维说明符,维说明符维说明符) : ) : 数数组名组名,数组名数组名2. 2. 用类型说明用类型说明(shumng)(shumng)语句说明语句说明(shumng)(shumng)数

6、组数组格式格式(g shi)(g shi): 类型符类型符 数组说明符数组说明符 , ,数组说明符数组说明符 例如:例如:CHARACTERCHARACTER* *6 CH(-10:10,5:9)6 CH(-10:10,5:9)* *8 8 REAL KK(8) REAL KK(8) REAL(8) A(30) REAL(8) A(30)3. 3. 用用DIMENSIONDIMENSION语句和类型说明语句同时说明数组语句和类型说明语句同时说明数组第4页/共30页第四页,共30页。例如例如(lr)(lr): REAL(8),DIMENSION(0:10) : A,B,C REAL(8),DIM

7、ENSION(0:10) : A,B,C INTEGER,DIMENSION(4,5) : D,E INTEGER,DIMENSION(4,5) : D,E 三个双精度型数组三个双精度型数组A,B,CA,B,C,各含有,各含有1111个元素。两个整型个元素。两个整型数组数组D,ED,E,各含有,各含有2020个元素。个元素。例如:例如: REAL,DIMENSION(0:10) : A,B(20),C(4,5,3) REAL,DIMENSION(0:10) : A,B(20),C(4,5,3)说明说明(shumng)A(shumng)A为为A(0:10)A(0:10),而,而B B为为B(20

8、)B(20),C C为为C(4,5,3)C(4,5,3)。 以数组名后面的维说明以数组名后面的维说明(shumng)(shumng)为准。为准。第5页/共30页第五页,共30页。数组名数组名 ( (下标下标(xi bio) ,(xi bio) ,下标下标(xi bio) )(xi bio) )二、数组元素二、数组元素(yun s)的引用的引用其中其中1:5:21:5:2的含义是从的含义是从1 1变化到变化到5 5,每次增加,每次增加2 2。三元三元(sn yun)(sn yun)表达式的形式是:表达式的形式是: 初值初值: :终值终值: :步长步长其中步长为其中步长为1 1时,步长可以省略。时

9、,步长可以省略。允许对数组进行整体操作,例如:允许对数组进行整体操作,例如:INTEGER , DIMENSION(1:5) : AINTEGER , DIMENSION(1:5) : AA(:)=0 A(:)=0 !或写成!或写成 A=0A=0,将,将A A的全部元素赋为的全部元素赋为0 0INTEGER , DIMENSION(4,5) : AINTEGER , DIMENSION(4,5) : AA(:,:)=10 A(:,:)=10 !或写成!或写成 A=10A=10,将,将A A的全部元素赋为的全部元素赋为1010A(:,1:5:2)=470 A(:,1:5:2)=470 !再将!再

10、将A A第第1,3,51,3,5列元素赋为列元素赋为470470第6页/共30页第六页,共30页。7.3 7.3 数组元素的存储数组元素的存储(cn ch)(cn ch)结构结构B(1,1) B(2,1)B(3,1) B(2,4)B(3,4)B(1,2)B(3,2)B(2,2)A(2)A(3)A(4)A(10)A(1)例:例:INTEGER A(10),B(3,4)INTEGER A(10),B(3,4)数组元素数组元素(yun s)按列存放按列存放第7页/共30页第七页,共30页。 7.4 7.4 数组的输入输出数组的输入输出一、一、 使用使用(shyng)DO(shyng)DO循环输入输出

11、数组元素循环输入输出数组元素INTEGER :I, JREAL: MAT(2, 3)DO I=1, 3 DO J=1, 2 READ(*,*) MAT(J, I) END DO END DO DO I=1, 2 DO J=1, 3 WRITE(*, 10) MAT(I, J) END DO END DO10 FORMAT(1X, F6.2)END特点特点(tdin)(tdin):每执:每执行一个输入语句输入一行一个输入语句输入一个数组元素值个数组元素值( (一个数一个数组元素值组成一个输入组元素值组成一个输入记录记录) )。每执行一个输出语句输每执行一个输出语句输出一个数组元素值出一个数组元素

12、值( (每每一行输出一个数组元素一行输出一个数组元素值值) )。第8页/共30页第八页,共30页。数组元素按照在内存中的排列数组元素按照在内存中的排列(pili)顺序一次全部输入输顺序一次全部输入输出。出。二、以数组名作为二、以数组名作为(zuwi)(zuwi)输入输出项输入输出项INTEGER W(3, 3)READ(*,*) W !按列的顺序!按列的顺序(shnx)输入输入WRITE(*, 10) W !按列的顺序!按列的顺序(shnx)输出输出10 FORMAT(1X, 3I3)输入:输入:1,4,7,2,5,8,3,6,91 2 31 2 34 5 64 5 67 8 97 8 9例:

13、将矩阵存放在数组中并输出。例:将矩阵存放在数组中并输出。输出:输出: 147 258 369第9页/共30页第九页,共30页。三、用隐三、用隐DODO循环循环(xnhun)(xnhun)对数组元素进行输入对数组元素进行输入输出输出既可灵活控制输入输出元素的顺序既可灵活控制输入输出元素的顺序(shnx)和个数,又能通过执行一次输入输出语句完和个数,又能通过执行一次输入输出语句完成。成。隐隐DO循环的形式循环的形式(xngsh): ( 输入输入/输出表输出表, i=e1, e2 , e3 )例:例:WRITE(*,*) (3, 4, I=1, 3)等价于:等价于:WRITE(*,*) 3, 4,

14、3, 4, 3, 4例:例:WRITE(*,100) ( I, A(I), I=1, 10, 2) 100 FORMAT( 1X, 5( I2, I4 )第10页/共30页第十页,共30页。隐隐DO循环可以多层嵌套。循环可以多层嵌套。INTEGER W(3, 3)READ(*,*)WWRITE(*, 10)( W( I, J ), J=1, 3 ), I=1, 3 )10 FORMAT(1X, 3I3) 内循环内循环外循环外循环输出输出(shch):W(1, 1) W(1, 2) W(1, 3) W(2, 1) W(2, 2) W(2, 3) W(3, 1) W(3, 2) W(3, 3)通过

15、内外通过内外(niwi)循环的循环的顺序可控制输顺序可控制输入输出顺序入输出顺序注意以下注意以下(yxi)两种方法的差异:两种方法的差异: WRITE(*,*) (A(I), I=2, 14, 3)一次输出一次输出A(2)、A(5)、A(8)、A(11)和和A(14)的值。的值。 DO I=2, 14, 3 WRITE(*,*)A(I) 输出输出5次次 END DO第11页/共30页第十一页,共30页。 7.5 7.5 给数组赋初值给数组赋初值 例例: REAL PP(6) COMPLEX*8 LPP INTEGER, DIMENSION(20) : A DATA PP, LPP/6*0, (

16、8.0, -89)/ DATA(A(I),I=1,20,2)/10*1/, (A(I), I=2, 20, 2)/10*0/一、使用一、使用(shyng)DATA(shyng)DATA语句赋初值语句赋初值DATA DATA 项目表项目表/ /常量常量(chngling)(chngling)表表/,/,项目表项目表/ /常量常量(chngling)(chngling)表表/项目表:变量名、数组名、数组元素项目表:变量名、数组名、数组元素(yun s)(yun s)名、名、 字符子串名和隐字符子串名和隐DODO循环。循环。与常量与常量 个数、类型、顺序一一对应。个数、类型、顺序一一对应。第12页/

17、共30页第十二页,共30页。 DATA DATA语句可以放在语句可以放在ENDEND语句之前任何位置。在程语句之前任何位置。在程序序(chngx)(chngx)编译阶段赋初值。编译阶段赋初值。二、使用二、使用(shyng)(shyng)数组赋值符赋初值数组赋值符赋初值格式格式(g shi):数组名:数组名=(/取值列表取值列表/)例:例:INTEGER W(6)INTEGER W(6) W=(/3,0,9,45,34,2/)W=(/3,0,9,45,34,2/) !用数组名给数组赋值!用数组名给数组赋值LOGICAL L(3)K=89L=(/.TRUE., K+1K, .FALSE. .AND

18、. .TRUE./)WRITE(*, 10) (L(I), I=1, 3)10 FORMAT(1X, 3L3)END 程序输出为:程序输出为: TTF第13页/共30页第十三页,共30页。例:例:INTEGER PP(-1:8)PP=(/3, 0, (i, i=1, 9, 2), 45, 34, 2/)WRITE(*,10) pp10 FORMAT(1X,10I3)END输出输出(shch)结果为:结果为:301357945342第14页/共30页第十四页,共30页。implicit noneinteger : a(10)integer: m, n, k, tempdo k =1, 10 re

19、ad(*,*) a(k)end do m=1; n=1do k=2, 10 if (a(m)a(k) n=kend do temp=a(1); a(1)=a(m); a(m)=temp temp=a(10); a(10)=a(n); a(n)=tempwrite(*,*) (a(k), k=1, 10)endP110 P110 例例7.2 7.2 从键盘输入从键盘输入1010个整数个整数(zhngsh)(zhngsh)存存入一个一维数组,然后将数入一个一维数组,然后将数组最大值与第一个元素互换,组最大值与第一个元素互换,最小值与最后一个元素互换,最小值与最后一个元素互换,其余元素不变。其余元素

20、不变。第15页/共30页第十五页,共30页。PROGRAM LETTERCHARACTER CH INTEGER:LEN (5)INTEGER COUNT, JDO J=1,5 LEN(J)=0END DODO COUNT=1, 100 READ(*,*)CH IF (CH=A.OR.CH=a) THEN LEN(1)=LEN(1)+1 ELSE IF(CH=E.OR.CH=e) THEN LEN(2)=LEN(2)+1 ELSE IF(CH=I.OR.CH=i) THEN LEN(3)=LEN(3)+1 ELSE IF(CH=O.OR.CH=o) THEN LEN(4)=LEN(4)+1 E

21、LSE IF(CH=U.OR.CH=u) THEN LEN(5)=LEN(5)+1 END IF END DOP111 P111 例例7.3 7.3 输入输入100100个字母,分个字母,分别统计元音字母别统计元音字母A A、E E、I I、O O、U U出出现现(chxin)(chxin)的次数。的次数。第16页/共30页第十六页,共30页。Parameter (n=10)Integer P(n), i, j, num, xLogical flagnum=1 !统计不同统计不同(b tn)数据的个数数据的个数do i =1, n read(*,*) x flag=.true. do j=1,

22、 num-1 if (p(j)=x) then flag=.false. ; exit end if end do if (flag) then p(num)=x num=num+1 end ifend do write(*,*)(p(i), i=1, num-1)endP111 P111 例例7.4 7.4 从键盘从键盘输入输入N N个整数存入个整数存入(cn r)(cn r)数组数组, ,要要求数组中无求数组中无 重复数重复数据。据。第17页/共30页第十七页,共30页。! 简单简单(jindn)交换排序交换排序integer(4) , parameter:n=10integer(4) :

23、 x(n)integer: i, j, tdo i =1, n read(*,*) x(i)end dodo i=1, n-1 do j=i+1, n if ( x(i)x(j) then t=x(i); x(i)=x(j); x(j)=t end if end doend dowrite(*,*) (x(i), i=1, n)endI 从从1变化到变化到N-1X(I)与与X(J)互换互换X(I)X(J)?J从从I+1变化到变化到NYNP112 P112 例例7.57.5:将:将N N个数从个数从小到大顺序排列。小到大顺序排列。第18页/共30页第十八页,共30页。! 选择选择(xunz)排序

24、排序PARAMETER(N=10)INTEGER, DIMENSION(N):XINTEGER I, J, T, LDO I=1, N READ *, X(I)END DODO I=1, N-1 L=I DO J=I+1, N IF (X(L)X(J) THEN L=J ENDIF ENDDO T=X(I); X(I)=X(L); X(L)=TENDDOWRITE(*,*)(X(I), I=1, N)ENDI 从从1 变化到变化到N-1X(I)与与X(J)互换互换X(L)X(J)?J 从从I+1变化到变化到NYNL=IL=J第19页/共30页第十九页,共30页。! 冒泡排序implicit n

25、oneinteger(4) , parameter:n=10integer(4) : x(n)integer: i, j, tread(*,*) (x(i), i=1, n)do i=1, n-1 do j=1, n-I if ( x(j)x(j+1) then t=x(j) x(j)=x(j+1) x(j+1)=t end if end doend dowrite(*,*) (x(i),i=1,n)endI 从从1变化到变化到N-1X(J)与与X(J+1)互换互换X(J)X(J+1)?J 从从1变化到变化到N-IYN第20页/共30页第二十页,共30页。P117 P117 例例7.8 7.8

26、 数据检索数据检索问题。设有问题。设有N N个数已存在个数已存在(cnzi)(cnzi)数组数组A A中,要中,要找的数据为找的数据为X X。PARAMETER(N=10) INTEGER A(N), I, XDO I=1, N READ *, A(I)ENDDOREAD *, XDO I=1, N IF (A(I)=X) THEN EXIT ENDIFENDDOIF ( IN ) THEN PRINT *, This data has not been found.ELSE PRINT *, This data has been found. It is A(, I, ).ENDIFEND第

27、21页/共30页第二十一页,共30页。P119 例例7.9 设有一个设有一个45的的矩阵:矩阵: 2 6 4 9 -13 5 -1 3 8 7 12 0 4 10 2 7 6 -9 5 3 求求(1)矩阵所有元素之和及平矩阵所有元素之和及平均值。均值。 (2)保留保留(boli)所有大于平所有大于平均值的元素,其余元素清零。均值的元素,其余元素清零。INTEGER A(4, 5)DATA A/2,5,12,7,6,-1,0,6,4,3,4,-9,9,8,10,5,-13,7,2,3/SUM=0DO I=1, 4 DO J=1, 5 SUM=SUM+A(I, J) ENDDOENDDOAVERAGE=SUM/(4*5)PRINT *, Sum, SUMPRINT *, Average, AVERAGEDO I=1, 4 DO J=1, 5 IF (A(I, J) ABS(X(I, K) THEN K=J END IF ENDDO WRITE(*,*) I, K, X(I, K)ENDDOEND第23页/共30页第二十三页,共30页。integer a(11)integer x, i, jdata

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论