循环结构的Fortran程序设计.ppt

上传人:wuy****n92 文档编号:54708884 上传时间:2022-10-29 格式:PPT 页数:25 大小:217.50KB
返回 下载 相关 举报
循环结构的Fortran程序设计.ppt_第1页
第1页 / 共25页
循环结构的Fortran程序设计.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《循环结构的Fortran程序设计.ppt》由会员分享,可在线阅读,更多相关《循环结构的Fortran程序设计.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022/10/281第四讲第四讲 循环结构程序设计循环结构程序设计 循循环环结结构构在在程程序序设设计计中中广广泛泛使使用用,是是一一种种非非常常重重要要的的程程序序结构。结构。其其基基本本思思想想是是重重复复,即即重重复复执执行行某某些些语语句句、以以完完成成大大量量的的计算计算要求。要求。但但是是,循循环环不不是是简简单单的的重重复复,因因为为尽尽管管每每次次都都执执行行相相同同的的语语句句,但但是是在在循循环环过过程程中中变变量量在在变变化化,而而且且完完成成了了循循环环次次数数或或在一定的条件下在一定的条件下能退出循环能退出循环。本讲介绍本讲介绍Fortran90Fortran90实

2、现循环结构的实现循环结构的2 2种方法:种方法:1 1、dodo循环结构;循环结构;2 2、do whiledo while循环结构。循环结构。循循环环次次数数事事先先可可以以确确定定下下来来,用用dodo语语句句实实现现循循环环,非非常常方方便便。比比如如,当当x=1x=1、2 2、3 3、1010时时,分分别别计计算算lnxlnx和和sinxsinx的值,用的值,用dodo循环实现的程序如下:循环实现的程序如下:2022/10/2821 1 用用dodo语句实现循环语句实现循环Integer xInteger xDo x=1,10,1Do x=1,10,1Do x=1,10,1Do x=1

3、,10,1Print*,x,log(x*1.0),sin(x*1.)Print*,x,log(x*1.0),sin(x*1.)Print*,x,log(x*1.0),sin(x*1.)Print*,x,log(x*1.0),sin(x*1.)End doEnd doEnd doEnd doEndEnd2022/10/283一、一、一、一、dodododo循环的一般格式循环的一般格式循环的一般格式循环的一般格式do i=e1,e2,e3do i=e1,e2,e3 (dodo语句语句)循环体循环体 (执行的操作执行的操作)end doend do (结束语句结束语句)其中其中:(:(1 1)i i

4、代表代表循环变量循环变量(可为整型或实型);(可为整型或实型);(2 2)e1,e2,e3e1,e2,e3称称为为参参数数表表达达式式,分分别别为为循循环环变变量量的的初值、终值和步长;初值、终值和步长;(3 3)循环体循环体是循环过程被重复执行的语句组;是循环过程被重复执行的语句组;(4 4)end end dodo是是循循环环结结束束的的终终端端语语句句,其其与与dodo语语句句配配合合使用。使用。比如,计算比如,计算5 5!Integer m,nInteger m,nm=1m=1Do n=1,5,1Do n=1,5,1m=m*nm=m*nEnd doEnd doPrint*,mPrint

5、*,mendend2022/10/284说明:说明:(1 1 1 1)步步步步长长长长为为为为1 1 1 1时时时时,表表表表达达达达式式式式e3e3e3e3可可可可以以以以省省省省略略略略。比比比比如如如如“do do do do i=1,10,1”i=1,10,1”i=1,10,1”i=1,10,1”与与与与“do i=1,10”do i=1,10”do i=1,10”do i=1,10”相同。相同。相同。相同。(3 3 3 3)参数表达式)参数表达式)参数表达式)参数表达式“i=e1,e2,e3”i=e1,e2,e3”i=e1,e2,e3”i=e1,e2,e3”表示表示表示表示循环次数循

6、环次数循环次数循环次数为:为:为:为:r=max(int(e2-e1+e3)/e3),0)r=max(int(e2-e1+e3)/e3),0)r=max(int(e2-e1+e3)/e3),0)r=max(int(e2-e1+e3)/e3),0)比比比比如如如如:do do do do i=10,1,-2i=10,1,-2i=10,1,-2i=10,1,-2的的的的循循循循环环环环次次次次数数数数r=5r=5r=5r=5,而而而而do do do do i=10,1,2i=10,1,2i=10,1,2i=10,1,2的的的的r=0r=0r=0r=0(即不循环),注意:(即不循环),注意:(即不

7、循环),注意:(即不循环),注意:1 1 1 1、步长不能为、步长不能为、步长不能为、步长不能为0 0 0 0;2 2 2 2、循环次数不能为、循环次数不能为、循环次数不能为、循环次数不能为0 0 0 0。(2 2 2 2)循循循循环环环环变变变变量量量量与与与与参参参参数数数数表表表表达达达达式式式式数数数数据据据据类类类类型型型型不不不不一一一一致致致致时时时时,其其其其处处处处理理理理方方方方法法法法与与与与赋赋赋赋值值值值语语语语句句句句相相相相同同同同,即即即即先先先先计计计计算算算算参参参参数数数数表表表表达达达达式式式式、并并并并把把把把结结结结果果果果转转转转换换换换成成成成循

8、循循循环环环环变变变变量量量量类类类类型型型型,然然然然后后后后进进进进行行行行处处处处理理理理。比比比比如如如如,“do do do do i=1.3,5.9,2.6”i=1.3,5.9,2.6”i=1.3,5.9,2.6”i=1.3,5.9,2.6”相当于相当于相当于相当于“do i=1,5,2”do i=1,5,2”do i=1,5,2”do i=1,5,2”Integer aInteger aDo a=1.3,5.9,2.6Do a=1.3,5.9,2.6Print*,aPrint*,aEnd doEnd doEndEnd输出为:输出为:1 1 3 3 5 52022/10/285二、

9、二、二、二、dodododo循环的执行过程循环的执行过程循环的执行过程循环的执行过程DoDo循循环环的的执执行行过过程程可可示示意意为为右右图图,说明如下说明如下:计算计算e1,e2,e3e1,e2,e3的值的值e1e1i计算循环次数计算循环次数r rr=0?执行循环体执行循环体i+e3+e3ir-1-1rend doend do下面的语句下面的语句是是否否(1 1 1 1)循循循循环环环环体体体体指指指指dodododo语语语语句句句句和和和和end end end end dodododo语语语语句句句句之之之之间间间间的的的的语语语语句句句句,不不不不包包包包括括括括dodododo语语

10、语语句句句句,因因因因此此此此dodododo语语语语句句句句在在在在循循循循环环环环过过过过程程程程中中中中只只只只执执执执行行行行一一一一次次次次。如如如如果果果果循循循循环环环环参参参参数数数数表表表表达达达达式式式式中中中中含含含含变变变变量量量量,那那那那么么么么即即即即使使使使在在在在循循循循环环环环体体体体中中中中改改改改变变变变变变变变量量量量的的的的值值值值,循循循循环环环环参参参参数数数数并并并并不改变。比如:不改变。比如:不改变。比如:不改变。比如:Integer a,b,c,IInteger a,b,c,Ia=1;b=7;c=2a=1;b=7;c=2Do i=a,b,c

11、+1Do i=a,b,c+1a=2;b=b+a;c=c*ia=2;b=b+a;c=c*iPrint*,i,a,b,cPrint*,i,a,b,cEnd doEnd doEndEnd输出为:输出为:1 2 9 21 2 9 2 4 2 11 8 4 2 11 8 7 2 13 56 7 2 13 56进进入入dodo循循环环后后,首首先先计计算算出出循循环环变变量量i i的的初初值值1 1、终终值值7 7、步步长长3 3(即即执执行行dodo语语句句),尽尽管管在在循循环环体体中中改改变变了了变变量量a a、b b、c c的的值值,但但是是循循环环变变量量的的初初值值、终终值值、步长不再变化。步

12、长不再变化。2022/10/286(2 2 2 2)由由由由于于于于在在在在循循循循环环环环过过过过程程程程中中中中,循循循循环环环环变变变变量量量量会会会会自自自自动动动动按按按按循循循循环环环环要要要要求求求求变变变变化化化化,因因因因此此此此不不不不能能能能在在在在循循循循环环环环体体体体内内内内给给给给循循循循环环环环变变变变量量量量进进进进行赋值行赋值行赋值行赋值。Integer iInteger iDo i=1,5,2Do i=1,5,2i=i+1i=i+1Print*,iPrint*,iEnd doEnd doEndEndErrorError for3598:for3598:as

13、signment assignment to to Do Do variable i detected between i and=variable i detected between i and=(3 3 3 3)由由由由于于于于每每每每循循循循环环环环一一一一次次次次循循循循环环环环变变变变量量量量自自自自动动动动增增增增加加加加一一一一个个个个步步步步长长长长的的的的值值值值,因因因因此此此此退退退退出出出出循循循循环环环环后后后后循循循循环环环环变变变变量量量量的的的的值值值值,比比比比最最最最后后后后一一一一次次次次循循循循环环环环时时时时循循循循环环环环变变变变量量量量的的的的值

14、值值值多多多多1 1 1 1个步长。个步长。个步长。个步长。Integer i,mInteger i,mDo i=1,10,2Do i=1,10,2m=im=iEnd doEnd doPrint*,i,mPrint*,i,mEndEnd输出为:输出为:11 911 9三、三、三、三、dodododo循环举例循环举例循环举例循环举例例例例例1 1 1 1:输入:输入:输入:输入x x x x、n n n n,计算输出,计算输出,计算输出,计算输出:分分分分析析析析:累累累累加加加加项项项项可可可可表表表表示示示示为为为为递递递递推推推推F F F Fi i i i=F=F=F=Fi-1i-1i-

15、1i-1*x/i*x/i*x/i*x/i,用用用用赋赋赋赋值值值值语语语语句句句句F=F*x/iF=F*x/iF=F*x/iF=F*x/i来实现。重复加是循环操作,程序为:来实现。重复加是循环操作,程序为:来实现。重复加是循环操作,程序为:来实现。重复加是循环操作,程序为:2022/10/287Integer n,iInteger n,iReal x,F,yReal x,F,yRead*,x,nRead*,x,nDo i=1,nDo i=1,nF=F*x/iF=F*x/iY=Y+FY=Y+FEnd doEnd doPrint*,x=,x,n=,nPrint*,x=,x,n=,nWrite(*,

16、*)y=,yWrite(*,*)y=,yEndEnd从键盘输入:从键盘输入:3,3 3,3 输出为:输出为:x=3.0 n=32022/10/288例例例例2 2 2 2:输输输输入入入入一一一一个个个个整整整整数数数数,判判判判断断断断并并并并输输输输出出出出是是是是否否否否为为为为完完完完数数数数(除除除除自自自自身身身身外外外外所所所所有有有有因因因因子之和等于本身的数),比如子之和等于本身的数),比如子之和等于本身的数),比如子之和等于本身的数),比如6=1+2+36=1+2+36=1+2+36=1+2+3,所以,所以,所以,所以6 6 6 6是完数。是完数。是完数。是完数。分分分分析

17、析析析:因因因因为为为为找找找找一一一一个个个个整整整整数数数数的的的的因因因因子子子子及及及及求求求求它它它它们们们们的的的的和和和和可可可可以以以以用用用用循循循循环环环环来来来来实实实实现现现现,而用选择结构可进行判断与输出其是否为完数,程序为:而用选择结构可进行判断与输出其是否为完数,程序为:而用选择结构可进行判断与输出其是否为完数,程序为:而用选择结构可进行判断与输出其是否为完数,程序为:Integer m,i,sumInteger m,i,sumRead*,mRead*,mSum=0Sum=0Do i=1,m/2 Do i=1,m/2 !求除本身之外的因子及之和!求除本身之外的因子

18、及之和If(mod(m,i).eq.0)sum=sum+iIf(mod(m,i).eq.0)sum=sum+iEnd doEnd doif(m.eq.sum)thenif(m.eq.sum)thenWrite(*,*)m,”Write(*,*)m,”是完数是完数”ElseElsePrint*,m,Print*,m,不是完数不是完数End ifEnd ifendend2022/10/289例例例例3 3 3 3:找出:找出:找出:找出3 3 3 3位整数中全部的水仙花数。位整数中全部的水仙花数。位整数中全部的水仙花数。位整数中全部的水仙花数。分分分分析析析析:利利利利用用用用dodododo循循

19、循循环环环环逐逐逐逐一一一一判判判判断断断断3 3 3 3位位位位整整整整数数数数100,999100,999100,999100,999中中中中哪哪哪哪些些些些是是是是水水水水仙仙仙仙花花花花数,并输出,程序为:数,并输出,程序为:数,并输出,程序为:数,并输出,程序为:Integer m,m1,m2,m3,nInteger m,m1,m2,m3,nDo m=100,999 Do m=100,999 m1=m/100m1=m/100m2=mod(m/10,10)m2=mod(m/10,10)m3=mod(m,10)m3=mod(m,10)n=m1*3+m2*3+m3*3n=m1*3+m2*3

20、+m3*3)Print*,m,)Print*,m,是水仙花数是水仙花数End doEnd doendend2022/10/2810四、四、四、四、dodododo循环中的控制语句循环中的控制语句循环中的控制语句循环中的控制语句在在在在dodododo循循循循环环环环中中中中,为为为为了了了了使使使使用用用用的的的的方方方方便便便便可可可可以以以以加加加加入入入入一一一一些些些些控控控控制制制制语语语语句句句句,此此此此处处处处介介介介绍绍绍绍2 2 2 2个这样的语句。个这样的语句。个这样的语句。个这样的语句。(1 1)exitexit语句语句ExitExitExitExit的的的的意意意意思

21、思思思是是是是退退退退出出出出,所所所所以以以以在在在在dodododo循循循循环环环环的的的的循循循循环环环环体体体体内内内内加加加加入入入入exitexitexitexit将将将将迫迫迫迫使使使使循循循循环环环环立立立立即即即即终终终终止止止止,即即即即退退退退出出出出循循循循环环环环体体体体,而而而而继继继继续续续续执执执执行行行行循循循循环环环环结结结结构构构构以以以以后后后后的的的的语语语语句。通常句。通常句。通常句。通常exitexitexitexit与与与与ifififif语句配合使用,即语句配合使用,即语句配合使用,即语句配合使用,即比如:求两个整数比如:求两个整数比如:求两个

22、整数比如:求两个整数m m m m和和和和n n n n的最大公约数和最小公倍数。的最大公约数和最小公倍数。的最大公约数和最小公倍数。的最大公约数和最小公倍数。分分分分析析析析:最最最最大大大大公公公公约约约约数数数数在在在在1,min(m,n)1,min(m,n)1,min(m,n)1,min(m,n)范范范范围围围围内内内内,且且且且同同同同时时时时能能能能被被被被m m m m和和和和n n n n整整整整除除除除,因因因因 此此此此 利利利利 用用用用 do do do do i=min(m,n),1i=min(m,n),1i=min(m,n),1i=min(m,n),1搜搜搜搜 寻寻

23、寻寻,一一一一 旦旦旦旦 mod(m,i)=0mod(m,i)=0mod(m,i)=0mod(m,i)=0、mod(n,i)=0mod(n,i)=0mod(n,i)=0mod(n,i)=0则则则则此此此此时时时时的的的的i i i i就就就就是是是是最最最最大大大大公公公公约约约约数数数数,并并并并利利利利用用用用exitexitexitexit退退退退出出出出循循循循环环环环。然后利用最大公约数,求出最小公倍数。程序为:然后利用最大公约数,求出最小公倍数。程序为:然后利用最大公约数,求出最小公倍数。程序为:然后利用最大公约数,求出最小公倍数。程序为:If(If(条件条件)exit)exit表

24、表表表示示示示条条条条件件件件为为为为真真真真执执执执行行行行exitexitexitexit终终终终止止止止循循循循环环环环,为为为为假时假时假时假时exitexitexitexit不执行,将继续执行循环。不执行,将继续执行循环。不执行,将继续执行循环。不执行,将继续执行循环。2022/10/2811Integer a,b,t,iInteger a,b,t,iread*,a,bread*,a,bif(ab)thenif(ab)thent=at=aa=ba=bb=tb=tend ifend ifDo i=a,1,-1Do i=a,1,-1if(mod(a,i)=0.and.mod(b,i)=0

25、)thenif(mod(a,i)=0.and.mod(b,i)=0)thenprint*,g=,iprint*,g=,iexitexitend ifend ifend doend doprint*,l=,a*b/i print*,l=,a*b/i !求最小公倍数求最小公倍数EndEnd比如:比如:1212,9 9 g=3,l=36注意:注意:注意:注意:在在在在程程程程序序序序中中中中,dodododo语语语语句句句句中中中中的的的的内内内内容容容容省省省省略略略略,表表表表示示示示循循循循环环环环条条条条件件件件永永永永远远远远成成成成立立立立。当当当当x x x x为为为为偶偶偶偶数数数数

26、时时时时执执执执行行行行cyclecyclecyclecycle语语语语句句句句-直直直直接接接接执执执执行行行行下下下下一一一一次次次次循循循循环环环环。当当当当x x x x大大大大于于于于100100100100时时时时,执执执执行行行行exitexitexitexit语语语语句句句句-跳跳跳跳出出出出循循循循环体环体环体环体。2022/10/2812(2 2)cyclecycle语句语句CycleCycleCycleCycle语语语语句句句句是是是是用用用用来来来来结结结结束束束束本本本本次次次次循循循循环环环环,即即即即跳跳跳跳过过过过循循循循环环环环体体体体中中中中尚尚尚尚未未未未

27、执执执执行行行行的的的的语语语语句句句句。在在在在循循循循环环环环结结结结构构构构中中中中,cyclecyclecyclecycle语语语语句句句句将将将将使使使使控控控控制制制制直直直直接接接接转转转转向向向向循循循循环环环环条条条条件件件件的的的的测测测测试部分,从而试部分,从而试部分,从而试部分,从而决定是否继续执行循环决定是否继续执行循环决定是否继续执行循环决定是否继续执行循环。CycleCycleCycleCycle语语语语句句句句与与与与exitexitexitexit语语语语句句句句的的的的区区区区别别别别在在在在于于于于:cyclecyclecyclecycle语语语语句句句句

28、只只只只是是是是结结结结束束束束本本本本次次次次循循循循环环环环,而而而而不不不不是是是是终终终终止止止止整整整整个个个个循循循循环环环环的的的的执执执执行行行行。ExitExitExitExit语语语语句句句句则则则则是是是是结结结结束束束束所所所所在在在在循循循循环环环环,跳出所在循环体。跳出所在循环体。跳出所在循环体。跳出所在循环体。例如:求例如:求例如:求例如:求1 1 1 1100100100100中全部奇数之和。中全部奇数之和。中全部奇数之和。中全部奇数之和。Integer:x=0,y=0Integer:x=0,y=0dodox=x+1x=x+1if(mod(x,2)=0)then

29、if(mod(x,2)=0)thencyclecycleelse if(x100)thenelse if(x100)thenexitexitelseelsey=y+xy=y+xend ifend ifend doend doprint*,yprint*,yEndEnd2022/10/28132 2 用用do whiledo while语句实现循环语句实现循环对对对对于于于于循循循循环环环环次次次次数数数数确确确确定定定定的的的的循循循循环环环环问问问问题题题题,使使使使用用用用dodododo循循循循环环环环是是是是比比比比较较较较方方方方便便便便的的的的。但但但但是是是是,有有有有些些些些循

30、循循循环环环环问问问问题题题题事事事事先先先先是是是是无无无无法法法法确确确确定定定定循循循循环环环环次次次次数数数数的的的的,只只只只能能能能通通通通过过过过给给给给定定定定的的的的条条条条件件件件来来来来决决决决定定定定是是是是否否否否继继继继续续续续循循循循环环环环。这这这这时时时时可可可可以以以以使使使使用用用用do do do do whilewhilewhilewhile语语语语句句句句来来来来实实实实现循环。现循环。现循环。现循环。一、一、一、一、do whiledo whiledo whiledo while循环的一般格式循环的一般格式循环的一般格式循环的一般格式do whil

31、e(do while(条件表达式条件表达式)(do whiledo while语句语句)循环体循环体 (执行的操作执行的操作)end doend do (结束语句结束语句)其中其中:(:(1 1)表示循环的条件表达式,要用括号括起来;表示循环的条件表达式,要用括号括起来;(2 2)循环体是在循环过程中被重复执行的语句组;)循环体是在循环过程中被重复执行的语句组;(3 3)end end dodo是是循循环环结结束束的的终终端端语语句句,do do whilewhile语语句句与与end doend do语句要配合使用。语句要配合使用。2022/10/2814比如:比如:do while(P0)

32、do while(P0)print*,pprint*,pread*,pread*,pend doend doEndEnd该该程程序序输输出出所所输输入入的的全全部部正正数数,直直到到输输入入负负数数或或零零,程程序序结束。结束。(4 4)对对于于循循环环次次数数确确定定的的循循环环问问题题也也可可以以使使用用do do whilewhile语语句句来实现,比如:求来实现,比如:求5 5!integer:m=1,n=1integer:m=1,n=1do while(m=5)do while(m0)Do while(m0)n=n+1n=n+1m=m/10m=m/10end doend doprin

33、t*,n=,nprint*,n=,nEndEnd比如:比如:129 129 n=32022/10/2817分分分分析析析析:这这这这种种种种累累累累加加加加求求求求和和和和的的的的问问问问题题题题,关关关关键键键键是是是是如如如如何何何何求求求求累累累累加加加加项项项项,通通通通常常常常的的的的办办办办法法法法是是是是利利利利用用用用前前前前一一一一项项项项来来来来求求求求后后后后一一一一项项项项,即即即即利利利利用用用用递递递递推推推推法法法法来来来来求求求求累累累累加项。加项。加项。加项。例例例例2 2 2 2:求求求求 ,直直直直到最后一项的绝对值小于到最后一项的绝对值小于到最后一项的绝

34、对值小于到最后一项的绝对值小于101010106 6 6 6时,停止计算。时,停止计算。时,停止计算。时,停止计算。X X X X右键盘输入。右键盘输入。右键盘输入。右键盘输入。real x,a,sreal x,a,sinteger:i=1integer:i=1read*,xread*,xs=xs=xa=xa=xdo while(abs(a)=1.0e-6)do while(abs(a)=1.0e-6)i=i+1i=i+1a=-x*x/(2*i-2)/(2*i-1)*aa=-x*x/(2*i-2)/(2*i-1)*as=s+as=s+aend doend doprint*,x,sprint*,

35、x,sEndEnd2022/10/28183 Fortran3 Fortran3 Fortran3 Fortran循环结构程序设计的其它问题循环结构程序设计的其它问题循环结构程序设计的其它问题循环结构程序设计的其它问题一、一、一、一、dodododo循环与循环与循环与循环与do whiledo whiledo whiledo while循环的互换循环的互换循环的互换循环的互换DoDoDoDo循循循循环环环环和和和和do do do do whilewhilewhilewhile循循循循环环环环是是是是Fortran90Fortran90Fortran90Fortran90中中中中常常常常用用用

36、用的的的的2 2 2 2种种种种基基基基本本本本循循循循环环环环结结结结构构构构,前前前前者者者者主主主主要要要要用用用用于于于于确确确确定定定定循循循循环环环环次次次次数数数数的的的的问问问问题题题题、而而而而后后后后者者者者则则则则常常常常用用用用来来来来处处处处理理理理事事事事先先先先无无无无法法法法确确确确定定定定循循循循环环环环次次次次数数数数的的的的问问问问题题题题,但但但但也也也也并并并并非非非非绝绝绝绝对对对对,很很很很多多多多情情情情况况况况下下下下二二二二者者者者可可可可以互换使用。以互换使用。以互换使用。以互换使用。比如:输入一个整数,判断是否为素数。比如:输入一个整数,

37、判断是否为素数。比如:输入一个整数,判断是否为素数。比如:输入一个整数,判断是否为素数。分分分分析析析析:所所所所谓谓谓谓素素素素数数数数指指指指这这这这样样样样的的的的整整整整数数数数:除除除除了了了了1 1 1 1和和和和本本本本身身身身不不不不能能能能被被被被其其其其它它它它任任任任何何何何数数数数整整整整除除除除的的的的数数数数。判判判判断断断断一一一一个个个个数数数数是是是是否否否否为为为为素素素素数数数数,可可可可以以以以按按按按照照照照2 2 2 2,3 3 3 3,m-m-m-m-1 1 1 1逐一检查能否除下,但当逐一检查能否除下,但当逐一检查能否除下,但当逐一检查能否除下,

38、但当m m m m很大时检查量太大。很大时检查量太大。很大时检查量太大。很大时检查量太大。有一个有一个有一个有一个结论结论结论结论:只需检查:只需检查:只需检查:只需检查2 2 2 2,3 3 3 3,m m m m1/21/21/21/2即可判断即可判断即可判断即可判断m m m m是否为素数。是否为素数。是否为素数。是否为素数。这这这这个个个个问问问问题题题题既既既既可可可可用用用用dodododo循循循循环环环环实实实实现现现现,也也也也可可可可利利利利用用用用do do do do whilewhilewhilewhile来来来来解解解解决决决决,程程程程序序序序分别为:分别为:分别为

39、:分别为:2022/10/2819implicit noneimplicit noneinteger m,i,jinteger m,i,jread*,mread*,mj=sqrt(real(m)j=sqrt(real(m)do i=2,jdo i=2,jif(mod(m,i).eq.0)exitif(mod(m,i).eq.0)exitend doend doif(i1)thenif(i1)thenprint*,m,print*,m,是素数是素数 elseelseprint*,m,print*,m,不是素数不是素数 end ifend ifEndEndimplicit noneimplicit

40、 noneinteger m,i,jinteger m,i,jread*,mread*,mi=2i=2j=sqrt(real(m)j=sqrt(real(m)do whiledo while(i=j.and.mod(m,i)/=0)(i1)thenif(i1)thenprint*,m,print*,m,是素数是素数 elseelseprint*,m,print*,m,不是素数不是素数 end ifend ifEndEnd2022/10/2820二、循环的嵌套二、循环的嵌套二、循环的嵌套二、循环的嵌套如如如如果果果果循循循循环环环环体体体体中中中中又又又又包包包包括括括括一一一一个个个个循循循循

41、环环环环结结结结构构构构,就就就就称称称称为为为为循循循循环环环环的的的的嵌嵌嵌嵌套套套套,也也也也叫叫叫叫多重循环结构多重循环结构多重循环结构多重循环结构。在在在在设设设设计计计计多多多多重重重重循循循循环环环环时时时时,要要要要特特特特别别别别注注注注意意意意内内内内、外外外外循循循循环环环环之之之之间间间间的的的的关关关关系系系系,以以以以及及及及各语句放置的位置,不能搞错。各语句放置的位置,不能搞错。各语句放置的位置,不能搞错。各语句放置的位置,不能搞错。比如比如比如比如:求:求:求:求100,200100,200100,200100,200以内的全部素数。以内的全部素数。以内的全部素

42、数。以内的全部素数。分析分析分析分析:分两步:分两步:分两步:分两步:(1 1 1 1)判判判判断断断断一一一一个个个个数数数数是是是是否否否否为为为为素素素素数数数数的的的的程程程程序段(见前面的例子);序段(见前面的例子);序段(见前面的例子);序段(见前面的例子);(2 2 2 2)利利利利用用用用穷穷穷穷举举举举法法法法将将将将判判判判断断断断一一一一个个个个数数数数是是是是否否否否为为为为素素素素数数数数的的的的程程程程序序序序段段段段,对对对对指指指指定定定定范范范范围围围围内内内内的的的的每每每每一一一一个个个个数数数数都都都都执执执执行行行行一一一一遍遍遍遍,即即即即可可可可求

43、求求求出出出出该范围内的所有素数了。该范围内的所有素数了。该范围内的所有素数了。该范围内的所有素数了。implicit noneimplicit noneinteger m,i,jinteger m,i,jlogicallogical zc zcdo m=101,200,2do m=101,200,2 zc=.true.zc=.true.i=2 i=2 j=sqrt(real(m)j=sqrt(real(m)do whiledo while(i=)(i=)if(mod(m,i).eq.o)zc=.False.if(mod(m,i).eq.o)zc=.False.i=i+1 i=i+1 end

44、doend do if(zc)then if(zc)then print*,m,print*,m,是素数是素数 end if end ifEnd doEnd doendend2022/10/2821分分分分析析析析:该该该该问问问问题题题题要要要要求求求求对对对对5 5 5 5个个个个x x x x值值值值、10101010个个个个y y y y值值值值,计计计计算算算算出出出出50505050个个个个F F F F值值值值。然然然然后后后后每每每每10101010个个个个F F F F值值值值求求求求和和和和得得得得到到到到5 5 5 5个个个个S S S S值值值值。再再再再5 5 5 5

45、个个个个S S S S值值值值连连连连乘得出乘得出乘得出乘得出M M M M的值。的值。的值。的值。可可可可用用用用二二二二重重重重循循循循环环环环实实实实现现现现:每每每每个个个个S S S S由由由由10101010个个个个F F F F累累累累加加加加,M M M M由由由由5 5 5 5个个个个S S S S累累累累乘乘乘乘得得得得到到到到。X X X X和和和和Y Y Y Y有有有有明显的规律,可用循环变量得到。明显的规律,可用循环变量得到。明显的规律,可用循环变量得到。明显的规律,可用循环变量得到。又比如又比如又比如又比如:已知:已知:已知:已知 x x x xi i i i=2=

46、2=2=2、4 4 4 4、6 6 6 6、8 8 8 8、10101010,y y y yj j j j=0.1=0.1=0.1=0.1、0.20.20.20.2、0.30.30.30.3、1.01.01.01.0;求求M M。real:x,y,F,s,real:x,y,F,s,M Minteger i,jinteger i,jdo i=1,5do i=1,5 do j=1,10do j=1,10 F=sqrt(x*2+y*2)F=sqrt(x*2+y*2)s=s+F s=s+F end doend do M=M*s M=M*sEnd doEnd doprint*,M=,Mprint*,M=

47、,MEndEnd输出结果:输出结果:2022/10/28224 4 4 4 循环结构程序设计上机循环结构程序设计上机循环结构程序设计上机循环结构程序设计上机1 1、已知、已知 ,分别求:,分别求:(1 1)当)当n n取取10001000时,时,S S的值;的值;【7.852727E-17.852727E-1】(2 2)S0.78S0.78时的最大时的最大n n值和此时值和此时n n值对应的值对应的S S值;值;【0.77996400.7799640;2323】(3 3)求)求S S的值,直到累加项小于的值,直到累加项小于10104 4为止。为止。【7.817278E-17.817278E-1

48、】2 2、甲甲、乙乙、丙丙三三球球迷迷分分别别预预测测已已进进入入半半决决赛赛A A、B B、C C、D D四四对对的的名名次次,甲甲预预测测:A A第第一一、B B第第二二,乙乙预预测测:C C第第一一、D D第第三三,丙丙预预测测:D D第第二二、A A第第三三。结结果果每每人人的的预预测测只只对对了了一一半半,试试问问真真正正的的名次应该是怎样?名次应该是怎样?【3 3、2 2、1 1、4 4】本本讲讲学学习习了了“重重复复操操作作、完完成成大大量量计计算算”的的循循环环结结构构程程序序设设计计问问题题,包包括括dodo循循环环和和do do whilewhile循循环环。知知道道了了2

49、 2种种循循环环结结构构的的编编写写格格式式、执执行行过过程程及及其其使使用用。还还明明白白在在dodo循循环环的的循循环环体体中中可可加加入入控控制制语语句句,比比如如exitexit语语句句和和cyclecycle语语句句的的使使用用,以以及及二二者者之之间的互换,循环的嵌套等。间的互换,循环的嵌套等。2022/10/2823integer i,ninteger i,nreal s,xreal s,xn=1000n=1000do i=1,ndo i=1,n x=2.0/(4*i-3)/(4*i-1)x=2.0/(4*i-3)/(4*i-1)s=s+x s=s+xEnd doEnd dopr

50、int*,s=,sprint*,s=,sendendinteger i,ninteger i,nreal s,xreal s,xi=1i=1do while(s0.78)do while(s=1E-4)do while(x=1E-4)s=s+x s=s+x i=i+1 i=i+1 x=2.0/(4*i-3)/(4*i-1)x=2.0/(4*i-3)/(4*i-1)End doEnd don=i-2n=i-2s=s-xs=s-xprint*,s=,sprint*,s=,sendend穷举法穷举法2022/10/28243 3、某某些些分分子子和和分分母母都都是是二二位位数数的的真真分分数数,分分

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁