fortran程序设计循环结构下.pptx
文本预览下载声明
6.5 DO结构嵌套 一个DO结构循环体内可以包含另一个DO循环结构,这就是DO结构循环嵌套。注意: 1 内循环必须完全嵌套在外循环体内,不能相互交叉。 2 循环嵌套中各层的循环控制变量不能同名。嵌套DO结构的执行过程 Do结构可以有多重嵌套,这里介绍二重嵌套的执行过程。对于多重嵌套,其基本原理相同。 1.当控制进入到外层DO结构后,先计算出外层DO结构的循环次数Ri,外层循环变量得到初值。 2.若Ri0,则结束外循环的执行,当然也不能进入内循环;若Ri0,执行外层结构的DO块内的语句。 3.当遇到内层DO语句时,控制进入内层DO结构;先算出内层DO结构的循环次数Rj,内层循环变量得到初值。 4.对于内层DO结构的执行过程与外层结构的一样;若Rj0,顺次执行内循环的各语句;当Rj0时,从“正常出口”退出内循环。 5.继续执行内循环DO结构后面的外循环体内的其它语句。 6.外层DO结构循环变量加一个步长,循环次数Ri减1。 7.重复2-6步的算法,直到RI等于0,结束全部循环。嵌套DO结构的有关规定:1.各种DO结构都可以嵌套,但必须完整嵌套。2.对于带循环变量的DO结构,并列的DO结构可以用同一个变量名作循环变量,而嵌套的DO循环结构则不能使用相同的循环变量。3.EXIT语句强行终止当前或指定循环。4.可从循环体内跳到循环外,但不能从循环体外跳到循环体内。6.6 隐含DO循环 隐含DO循环实际上是带控制变量的DO结构。但简化成只有DO结构的第一句,且把DO关键字隐去。 隐含DO循环的形式为: (list,v=u1,u2,u3)例如:READ *,(A(I),I=1,5)PRINT ‘(5I5)’,(A(I),I=1,5)注意:隐含do循环输入、输出与DO循环输入输出的区别。几种常见的隐含DO循环的形式:1.按指定步长读写。例如 PRINT *,(X(J),J=1,19,2)2.隐含DO循环与普通变量混合使用。例如 PRINT *,A,B,(X(I),I=1,3),C3.用于输出一些特殊符号。例如 PRINT *,(’-’,I=1,80)4.隐含DO循环可以并列出现。例如 READ *,(A(I),I=1,4),(B(I),I=1,4)5.隐含DO循环可以嵌套使用。例如 PRINT *,((A(I,J),J=1,5),I=1,3)6.7 程序举例【1】在下列的程序段中,循环体被执行的次数为: DO 10 A=2.5,-1.6,-0.5 〈循环体〉 CONTINUE【2】阅读下列程序: DO 10 K=5,1,-1 M=0 DO 20 J=K,5 M=M+K*J20 CONTINUE CONTINUE WRITE(*,*)M END上述程序运行后,输出的M值为【3】阅读下列程序: S=0.0 DO 10 I=1,2 DO 10 J=1,3 S=S+I+J10 CONTINUE WRITE(*,*)S END上述程序运行后,输出的S值为【4】在下列的双重循环中,内层的循环体执行的总次数为: DO 10 T=1.5,10.5,1.5 DO 10 I=1,10 〈循环体〉10 CONTINUE【5】为了计算并输出n!,其中n从键盘输入,下列各FORTRAN程序中正确的是: A) READ(*,*)N S=0.0 DO 10 I=1,N S=S*ICONTINUE WRITE(*,*)’S=’,S END B) READ(*,*)N K=1 S=1.0 K=K+1 S=S*K IF(K.LE.N) GOTO10 WRITE(*,*)’S=’,S END【5】为了计算并输出n!,其中n从键盘输入,下列各FORTRAN程序中正确的是: C) READ(*,*)N K=1 S=1.0 IF(K.LE.N)THEN S=S*K K=K+1 GOTO 10 END IF WRITE(*,*)’S=’,S END D) READ(*,*)N K=1 S=1.0 IF(K.LE.N) THEN K=K+1 S=S*K GOTO 10 END IF WRITE(*,*)’S=’,S END【6】下列各循环中,正确的是:A) DO 10 I=1,10 D0 20 J=1,3 … CONTINUE 20 CONTINUE B) DO 10 I=1,10 DO 10 I=2,5,2 … CONTINUE【6】下列各循环中,正确的是:C) DO 10 I=1,10 … IF(X.GE.0.0) I=11 … CONTINUE D) DO 10 I=1,10 … 10 CONTINUE DO
显示全部