fortran选择结构及基本语句_第1页
fortran选择结构及基本语句_第2页
fortran选择结构及基本语句_第3页
fortran选择结构及基本语句_第4页
fortran选择结构及基本语句_第5页
已阅读5页,还剩16页未读, 继续免费阅读

下载本文档

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

文档简介

1、fortran选择结构及基本语句4.1 概述顺序构造程序特点:程序自上而下按语句顺序逐句执行。是三大构造之一。选择构造程序特点:根据条件断定结果断定语句执行顺序。是三大构造之一。FORTRAN90提供IF和SELECT语句来实现选择构造。例如:输入学生成绩,断定合格与否,输出断定结果。 PROGRAM exam4_1 CHARACTER*6 grade WRITE(*,“(输入学生成绩:) READ (*,*)s IF (s=60) THEN grade=合格 ELSE grade=不合格 END IF WRITE(*,*)该学生成绩,grade,。 END programs60假真输出gra

2、de结 束开 始输入成绩s“合格”grade“不合格”grade24.2 逻辑IF语句逻辑IF语句语法: IF() 其中:e为逻辑表达式或关系表达式。 S为赋值语句、输入输出语句、STOP、EXIT等可执行语句。逻辑IF语句功能:先求e值,为真(.TRUE.),执行语句S。 示例: READ (*,*)i,j IF(iB) READ (*,*) AIF (X.EQ.10.0) WRITE(*,*) XIF (ABS(A-B)B) EXITIF (SUM .LT. 100.0) G0TO 10非法逻辑IF语句:IF (B.LT.100.0) IF (B.GE.80) A=B IF (X.GT.1

3、00.0) ENDIF (AB) T=A A=B B=TIF (AB .AND. AC) DATA A/8/IF (AB .AND. AC)IF A.GT.Max Max=A 4例4.1三个整数A,B,C,输入其值并打印三个数中最大值。 解:根据题意设计算法并画程序流程图,如图4-2所示。 程序: INTEGER A,B,C,max WRITE(*,“(请输入三个整数:) READ(*,*) A,B,C max=A IF(Bmax) max=B IF(Cmax) max=C WRITE(*,100) max 100 FORMAT(1X,max=,I5) END输入:请输入三个实数:12,100

4、,22输出:max= 100 结束max=ABmax真假max=BCmax假真max=C输出max输入: A,B,C54.3 块IF语句根本块IF语句语法: IF()THEN ELSE END IF IF()THEN END IF 根本块IF语句功能:先求e值,为真,执行, 为假,执行。 和为一程序段(语句序列)。6选择结构有三种类型:双边结构、单边结构1、单边结构2。真假THEN语句体eELSE语句体双边选择结构ENDIFENDIF真假eTHEN语句体单边选择结构1ENDIF真假eELSE语句体单边选择结构2IF (e) THEN ELSE ENDIFIF (e) THEN ENDIFIF

5、(e) THENELSE ENDIFIF (.NOT. e) THEN ENDIF7例4.2输入一个整数,判断它是奇数还是偶数,并打印输出。解:根据题意设计算法并画程序流程图,如图4-4所示。 程序: 10 FORMAT(1X,I5, IS A EVEN NUMBER.) 20 FORMAT(1X,I5, IS A ODD NUMBER.) WRITE(*,*) PLEASE INPUT A INTEGER NUMBER: READ(*,*) N IF(MOD(N,2)= =0)THEN WRITE(*,10) N ELSE WRITE(*,20) N END IF END 输入:77 输出:

6、77 IS A ODD NUMBER. 假打印奇数输入N结束MOD(N,2)= =0打印偶数真8多支块IF语句语法: IF()THEN ELSE IF()THEN ELSE IF()THEN ELSE IF()THEN ELSE END IF 功能:求ei值,为真,执行,均为假,执行。 9给定一学生成绩S,评判该学生等级,并输出评判结果。评判标准: 优:90S100;良:80S90;中:70S80 及格:60S70;不及格:S60解:根据题意设计算法并画程序流程图,如以以下图所示。 有三个等价程序可求解这一问题。输出“优”输出“良”输出“中”输出“及”输出“不及”S60真假S70真假S80真假

7、S90真假10 !程序一 WRITE(*,“(输入学生成绩:) READ (*,*)S IF (S=60 .AND. S=70 .AND. S=80 .AND. S=90) WRITE(*,*)该学生成绩为:优。 END11 !程序二 WRITE(*,“(输入学生成绩:)”) READ (*,*)S IF (S60) THEN WRITE(*,*)该学生成绩为:不及格。 ELSE IF (S70) THEN WRITE(*,*)该学生成绩为:及格。 ELSE IF (S80) THEN WRITE(*,*)该学生成绩为:中。 ELSE IF (S90) THEN WRITE(*,*)该学生成绩

8、为:良。 ELSE write(*,*)该学生成绩为:优。 END IF END IF END IFEND IFEND12 READ *,*)S !程序三 IF (S60) THEN write(*,*)该学生成绩为:不及格。 ELSE IF (S70) THEN write(*,*) 该学生成绩为:及格。 ELSE IF (S80) THEN write(*,*) 该学生成绩为:中。 ELSE IF (S90) THEN write(*,*) 该学生成绩为:良。 ELSE write(*,*) 该学生成绩为:优。 ENDIF END13嵌套块IF:指块IF语句中又包含块IF语句,可有多层嵌套

9、。对于嵌套块IF,内外层块IF语句体不能互相穿插。块IF语句可命名,在嵌套块IF中,可对内外层块IF语句进展命名。 例如:求解方程ax2+bx+c=0,需要检查是否a=0,防止除0溢出。 Disc=b*b4*a*c Outer: IF (a/=0) THEN Inner: IF (Disc0) THEN WRITE(*,*)Complex roots ELSE Inner X1=(-b+SQRT(Disc)/(2*a) X2=(-b-SQRT(Disc)/(2*a) END IF Inner END IF Outer 14MS-FORTRAN 90引入类似PASCAL和C语言中块CASE构造的

10、新功能。CASE构造功能:计算表达式值,从多个分支中选择一分支执行。 SELECT CASE() CASE () CASE () CASE () CASE DEFAULT END SELECT :,: 集合表示示例:1,5,7-91,3,5,7,9125,250,375,500pen,pencil,deskA,B,C,D.TRUE.15给定学生成绩S,评定优、良、中、及格、不及格等级,并输出。 INTEGER(1) S READ (*,*)S SELECT CASE(INT(S) CASE(90:100) WRITE(*,*)该学生成绩为:优。 CASE(80:89) WRITE(*,*)该学

11、生成绩为:良。 CASE(70:79) WRITE(*,*)该学生成绩为:中。 CASE(60:69) WRITE(*,*)该学生成绩为:及格。 CASE(0:59) WRITE(*,*)该学生成绩为:不及格。 END SELECT CASE DEFAULT END WRITE(*,*)输入成绩数据错! 164.4 选择构造程序设计举例例4.4任意输入一个整数N(N2),确定N是否为素数,输出判定结果。解:对于整数N,若为偶数,则一定不是素数;若为奇数,从K=3至N+1,逐个测试MOD(N,K)是否为零,若有一次为零,则N不是素数,否则N为素数。 LOGICAL : FLAG=.TRUE. R

12、EAD(*,*)N SELECT CASE (N) CASE (2) WRITE(*,*) 2是素数。 CASE (3:) IF (MOD(N,2)= =0) THEN WRITE(*,200) N STOP ENDIF M=INT(SQRT(FLOAT(N)+1) DO K=3,M,2 IF (MOD(N,K)= =0) FLAG=.FALSE. ENDDO IF (FLAG) THEN WRITE(*,100) N ELSE WRITE(*,200) N ENDIFCASE DEFAULT WRITE(*,*) 数据输入不正确。END SELECT100 FORMAT(1X,I4,是素数。

13、)200 FORMAT(1X,I4,不是素数。)END17例4.5求解方程Ax2+Bx+C=0。A,B,C由键盘输入,计算且输出方程解。 (1)A=0,B0;(方程只有一个解) (2)A=0,B=0,C=0;(方程有无穷个解) (3)A=0,B=0,C0;(方程无解) (4)A0,B2-4AC 0;(方程有二个不同的实数解) (5)A0,B2-4AC=0;(方程有二个一样的实数解) (6)A0,B2-4AC0;(方程有二个不同的复数解)解:依题意设计算法,并画流程图盒图或PAD图。 程序: 输入: 输出: 18真假C/=0假真输出:无穷解输出:无解输出:有1解XR=-B/2AD0=SQRT(D

14、)XI=SQRT(-D)/2AX1=(-B+D0)/2AX2=(-B-D0)/2AD=B2-4AC输出:XR,XI输出:X1,X2输入A,B,C开 始A=0假真B/=0假真结束D019WRITE(*,*) PLEASE INPUT A,B,CREAD(*,*) A,B,CD=B*B-4*A*CIF(A= =0)THEN IF (B/=0) THEN WRITE(*,*) 只有一个解:,C/B ELSE IF(C/=0)THEN WRITE(*,*) 方程无解。 ELSE WRITE(*,*) 方程有无穷解。 END IFELSE IF(D0)THEN XR=-B/(2*A);XI=SQRT(-

15、D)/(2*A) WRITE(*,20) XR,XI;WRITE(*,30) XR,XI ELSE D0=SQRT(D) X1=(-B+D0)/(2*A) X2=(-B-D0)/(2*A) WRITE(*,10) X1,X2 END IF 10 FORMAT(1X,X1=,F10.6, X2=,F10.6)20 FORMAT(1X,X1=,F10.6, +,F10.6, i) 30 FORMAT(1X,X2=,F10.6, -,F10.6, i) END 输入:1.0,1.0,-2.0 输出:X1= 1.000000 X2= -2.000000 204.5 习题四1某商店对购货额为1000元以上(含1000元,下同),八折优待;500元 以上1000元以下,九折优待;200元以上500元以下,九五折优待

温馨提示

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

评论

0/150

提交评论