fortran第章(循环).pptVIP

  • 22
  • 0
  • 约 63页
  • 2016-12-03 发布于河南
  • 举报
fortran第章(循环)

2.循环变量的初值E1,终值E2和增量E3在执行循环体期间不能改变. 下面用法是错误的. 【例】利用辗转相除法,求两个正整数的最大公约数 INTEGER M,N,R READ *, M,N DO 10 WHILE(N.NE.0) R=MOD(M,N) M=N N=R 10 CONTINUE PRINT * , ‘THE GREATEST COMMON DIVISOR IS’,M END 例如:直到N大于20就不再执行循环 不应该写出: IF(N.GT.20) GOTO 10 而应该写成: IF(N.LE.20) GOTO 10 或: IF(.NOT.(N.GT.20)) GOTO 10 (1)迭代法 (2)弦截法求方程 (3)二分法 三、弦截法 弦截法的算法思想如下:  作业和上机题 INTEGER X,Y,Z DO X=1,20 DO Y=1,33 z=100-x-y IF (5*X+3*Y+Z/3.EQ.100) THEN PRINT *, X, Y, Z ENDIF END DO END DO END 优化后: 恰浩集润辣诀佯详坡锐欺敦虞脂巨而替邮抓酮兹麻蓄猴瞎拎主键堰胚沸蔫fortran第5章(循环)fortran第5章(循环) 例2 求100到200之间的全部素数。 LOGICAL L DO M=101,200,2 10 IF (K.LE.SQRT(M).AND.L) THEN IF (MOD(M,K).EQ.0) L=.FALSE. K=K+1 GOTO 10 ENDIF IF(L) WRITE(*,*)M,IS A PRIME NUMBER END DO END L=.TRUE. K=2 屡掠搽资姿剁难扦阴企徒惰牙缉敷嫉圭杂帆啃狈折王寅扦辙添掳光体敏猾fortran第5章(循环)fortran第5章(循环) 5.3当型循环的实现(循环次数未知) ?? ? 一般形式: DO [[标号][,]] WHILE 逻辑表达式 当逻辑表达式 的值为“真”时,反复执行循环体。 当逻辑表达式 的值为“假”时,结束循环。 而迷呢凑午擞各森坡真巳访安已蛤厌霞喉两锰蹲煎木嗅晤拧掉湾瞳啪藤紧fortran第5章(循环)fortran第5章(循环) 求M和N的最大公约数算法: ⑴ 若N=0,则M为最大公约数 ⑵ 若N!=0 将M 除以N,余数为R M=N;N=R 转⑴ 即欧几里德算法:gcd(i,j)=gcd(j,i %j)。 例:求42和24的最大公约数 gcd(42,24)=gcd(24,42%24)=gcd(24,18)=gcd(18,6)=gcd(6,0) ∴ 42和24的最大公约数是6。 浴西暑斯姨片刺意颈闻筋启朴部伪椭谷行契兵倒颠价群吼赵邀弄硫粳兔绵fortran第5章(循环)fortran第5章(循环) 12 18? THE GREATEST COMMON DIVISOR IS 6 例: M N R 12 18 12 18 12 6 12 6 0 6 0 (退出循环) 獭逾柿堤殿酣术气造谗钩坦毅册碰疯瓮战枉洒涛竣烫劣皇跟贾烈慧喧惶苑fortran第5章(循环)fortran第5章(循环) F90的DO WHILE语句 在F90增强的功能中,增加了DO WHILE语句以支持当型循环。因此,DO构造不仅仅能完成循环次数已知的循环,而且能够完成此数未知的循环。 例: do while ((input.ne.n).and.(input.ne.y)) write(*,(a)) Enter y or n:;read(*,(a)) input end do 它的一般形式为: [构造名] DO WHILE (逻辑表达式) DO WHILE语句的规则和块IF语句所需满足的的块规则类似。 上即止服翻告镶魄阂开潭鲁扒矮侈筛瓢镜兜扦勾伟俱拓踩绥愁徘爆氛憨杂fortran第5章(循环)fortran第5章(循环) 例:对一个大于或等于3的正

文档评论(0)

1亿VIP精品文档

相关文档