Fortran程序设计(第六章-循环结构(下)

上传人:muw****50 文档编号:244803560 上传时间:2024-10-06 格式:PPT 页数:48 大小:244KB
返回 下载 相关 举报
Fortran程序设计(第六章-循环结构(下)_第1页
第1页 / 共48页
Fortran程序设计(第六章-循环结构(下)_第2页
第2页 / 共48页
Fortran程序设计(第六章-循环结构(下)_第3页
第3页 / 共48页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六章 循环结构(下),6.5 DO,结构嵌套,6.6,隐含,DO,循环,6.7,程序举例,一个,DO,结构循环体内可以包含另一个,DO,循环结构,这就是,DO,结构循环嵌套。,注意:,1,内循环必须完全嵌套在外循环体内,不能相互交叉。,2,循环嵌套中各层的循环控制变量不能同名。,6.5 DO,结构嵌套,嵌套,DO,结构的执行过程,Do,结构可以有多重嵌套,这里介绍二重嵌套的执行过程。对于多重嵌套,其基本原理相同。,1,当控制进入到外层,DO,结构后,先计算出外层,DO,结构的循环次数,Ri,,外层循环变量得到初值。,2,若,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,),,C,3.,用于输出一些特殊符号。例如,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*J,20 CONTINUE,CONTINUE,WRITE(*,,,*)M,END,上述程序运行后,输出的,M,值为,【3】,阅读下列程序:,S=0.0,DO 10 I=1,2,DO 10 J=1,3,S=S+I+J,10 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,*,I,CONTINUE,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 20 I=2,30,2,20 CONTINUE,【7】,下列的双重,DO,循环中,内层的循环体执行的总次数为,:,DO 10 I=1,10,DO 10 J=I,10,循环体,10 CONTINUE,【8】,填空:将,DO,循环改为用,IF,语句实现的直 到型循环,使两程序完全等价。,READ(,*,*,)N,S=0.0,DO 10 K=1,N,S=S+1.0/(K,*,(K+1),CONTINUE,WRITE(,*,*,)S=,S,END,READ(,*,*,)N,S=0.0,(1),K=0,S=S+D,(2),D=1.0/(K,*,(K+1),IF(3)GOTO 10,WRITE(,*,*,)S=,S,END,【9】,下列说法中正确的是:,A),所有需要重复处理的问题都可以用,DO,循环结 构来处理。,B),在循环次数事先能确定的情况下,只能用,DO,循环结构来处理。,C)DO,循环也是属于当型循环。,D),所有当型循环不能用直到型循环来处理。,【10】,阅读下列程序:,READ(,*,*,)N,S=0.0,K=1,IF(N.GE.5)THEN,S=S+32,T=1,T=2,*,T,S=S+T,K=K+1,IF(K.LE.N)GOTO 10,END IF,WRITE,(,*,*,)S,END,在执行这个程序时,如果从键盘输入,6,则运行后输出的,S,值,为,【11】,阅读下列程序:,READ(,*,*,)N,K=0,DO 10 I=1,N,DO 10 J=I-1,N,K=K+1,CONTINUE,WRITE,(,*,*,)K,END,在执行这个程序时,如果从键盘输入,10,则运行后输出的,K,值,为,【12】,将下列程序段改写成用直到型循环实现同样的功能。在下划线处填入适当内容:,READ(,*,*,)N,X=0.0,Y=0.0,DO 10 I=0,N-1,X=X+0.5,Y=Y+X,*,X/(I+1),10 CONTINUE,READ(,*,*,)N,X=0.0,Y=0.0,IF(N.GE.1)THEN,(1),10 (2),Y=Y+X,*,X/K,(3),IF(K.LE.N)GOTO 10,END IF,练习:,1,、下面关于,DO,循环的规定,错误的是,_,。,(A)DO,循环的循环控制变量不能在循环体内赋值,(B)DO,循环的控制变量表达式,终值和步长可以是整型和实型,(C)DO,循环是当型循环,(D)DO,循环的循环控制变量不能是双精度型,2,、有如下循环入口语句,INTEGER,:,I,DO I=-0.5,-0.5,-1.0,该循环的执行次数为,_,。,(A)0 (B)1 (C),出错,(D),无限,3.,有如下循环入口语句,DO I=1,15,3,正常结束时有,I=_,。,(A)13 (B)15 (C)16 (D),不一定,4.,有如下循环入口语句,DO J=1,15,3,IF(MOD(J,10)=0)GOTO 10,PRINT*,J,END DO,该语句输出的,J,的值是,_,。,(A)1 4 7 10 (B)1 4 7 10 13,(C)1 4 7 13 (D)10,5.,下面关于,DO,循环和块,IF,结构联合使用时的一些规定的叙述,其中错误的是,_,。,(A)DO,循环体可以是一个块,IF,结构,(B),块,IF,结构中的,IF,块,ELSE IF,块,ELSE,块中可以完整的包含,DO,循环,(C)DO,循环体不能是一个块,IF,结构,(D)DO,循环中有一个,IF,语句,则必须有,ELSE,语句或,ELSE IF,语句,END IF,语句在同一循环体内,6.,有如下一程序,M=3;I=1,100 IF(I1e,-,6),pi=pi+t;n=n+2;s=,-,s;t=s/n,enddo,pi=pi*4,print*,pi=,pi,end,例,2,:求,Fibonacci,数列:1,1,2,3,5,8的前40个数,即,F,1,=1,(,n=1),,,F,2,=1,(,n=2),,,F,n,=F,n-1,+F,n-2,(n,大于2),分析:算法如下,f,1,=1,f,2,=1,do i=1,20,输出,f1,,,f2,f,1,=f,1,+f,2,f,2,=f,2,+f,1,integer:f1,f2,f1=1,f2=1,do i=1,20,print*,f1,f2,f1=f1+f2;f2=f2+f1,end do,end,例,3,:判别,m,是否为素数。,分析:算法如下,读入,m,,并令,k=sqrt(m),i=2,当,i=k+1)then,print*,m,is a prime number,else,print*,m,is not a prime number,endif,enddo,end,例,4,:歌德巴赫猜想(将一个,100200,的偶数分解成两个素数之和),程序:,PROGRAM MAIN,IMPLICIT NONE,INTEGER:N,N1,N2,K,KEND,LOGICAL PRIME,N:DO N=100,200,2,N1=1,DO,IF(N13)THEN,N1=N1+1,ELSE,N1=N1+2,ENDIF,PRIME=.TRUE.,KEND=SQRT(REAL(N1),KK1:,DO K=2,KEND,IF(MOD(N1,K)=0)PRIME=.FALSE.,ENDDO,KK1,IF(.NOT.PRIME),CYCLE,N2=N-N1;PRIME=.TRUE.,KEND=SQRT(REAL(N2),KK2:,DO K=2,KEND,IF(MOD(N2,K)=0)PRIME=.FALSE.,ENDDO,KK2,IF(.NOT.PRIME)THEN,CYCLE,ELSE,EXIT,ENDIF,ENDDO,WRITE(*,(I3,=,I3,+,I3)N,N1,N2,ENDDO N,END,例,5,:对于,-,5x11,;,-,10y9,;,-,6 z 18,,求方程:,x,3,+y,3,+z,3,=3,的全部解。,程序设计有三种基本的思维方法:,枚举法、归纳法、抽象法,枚举法:,就是逐一列举出可能解的各个元素,并加以判断,直到求得所需要的解。常用在排列、组合、数据分类、信息检索、多解方程的求解上;,程序如下:,Integer:x,y,z,do x=,-,5,11,do y=,-,10,9,do z=,-,6,18,if(x*x*x+y*y*y+z*z*z=3)then,print*,x,y,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!