三、选择结构程序设计
1.开机;进入Fortran PowerStation4.0集成工作环境,了解工作环境及其菜单的使用,输入如下FORTRAN90源程序,并以A1.F90存盘。
PROGRAM EX1 IMPLICIT NONE PRINT *,'2+3=',2+3
PRINT *,'This is a program!' END PROGRAM EX1
编译、链接、运行后,结果是:2+3=5 This is a program!
2.输入并调试以下程序,查看运行结果。 PROGRAM EX2 IMPLICIT NONE INTEGER::A,B,C READ *,A,B C=A+B
PRINT *,'A+B=',C END PROGRAM EX2
运行时,输入2,3↙,则结果是:2+3=5 This is a program! 3.程序设计
2⑴ 已知一个球的半径,求它的表面积(4?R)、体积(432直径(2R)、周长(2?r)和面积(?R)。
?R3)及经过球心的横切面的
⑵求方程X2+3X-1=0的根
3.(1). (2)
PROGRAM EXAM3 PROGRAM EXAM4 IMPLICIT NONE IMPLICIT NONE REAL::R.H.C.S1.S2.S3.V.PI REAL::A.B.C
PI=3.1415926 X1=C-B+SQR+(B*B-Q*A*C)/(2*A) C=2*PI*R X2=C-B-SQR+(B*B-Q*A*C)/(2*A) SI=PI*R*R PRINI *X1*X2
S2=2*R END PROGRAM EXAM4 S3=R*PI*R*R 输入M:1,3,-1
V=4/3*RI*R*R*R 输出:3.027757E---0.1---3.302776 PRINT*,S1,S2,S3,V,C END PROGRAM EXAM3 输入M:3
输出:28.274330 6.000000 113.097300 84.823000
18.849560
实验4 选择结构程序设计
三、实验内容
1.运行下面程序: PROGRAM EXAM1
IMPLICIT NONE INTEGER::A,B,C A=5 B=3
C=A.AND.B PRINT *,C
END PROGRAM EXAM1 结果为:\
3.编写程序:
?0⑴ 编写计算分段函数:y??x?e2??1?2.运行下面程序: PROGRAM EXAM2
LOGICAL::L1,L2,L3 L1=.TRUE. L2=2>3
L3=.NOT.L2.AND.L1 PRINT *,L1,L2,L3
END PROGRAM EXAM2 结果为:\
(x??1)(?1?x?1) (x?1)
⑵ 由键盘输入学生成绩,要求输出该成绩的等级A, B, C, D, E。其中60分以下为E;60~70分为D;70~80分为C;80~90分为B;90~100分为A。要求分别用块IF和块SELECT CASE语句编写。
⑶求一元二次方程ax2?bx?c?0的根。
(2)、PROGRAM EXAM 2A
IMPLICIF NONE READ*,SCORE
SELECT(ASE(INICSCORE)) CASE(90:100) PRINT*,'A' CASE (80:89) PRINT*'B' CASE(70:79) PRINT*'C' CASE(60:69) PRINT*'D' CASE(0:59) PRINT*'E'
END SELECT
END PROGRAM EXAM 4A 输入65 输出D
3、(1)PRPGRAM EXAM1 IMPLICIF NONE REAL::X.Y READ*,X
IF(X<=-1) THEN Y=0
ELSE IF(X<1) THEN Y=1
END IF PRINT *,Y
END PROGRAM EXAM3 输入-1 输出0.000000E+00 输入1 输出1.000000
法2:PROGRAM EXAM 2B
IMPLICIT NONE INTEGER::SCORE
CHARACTER(LEN=1)::GRADE READ*,SCORE
IF(SCORE>=90)THEN GRADE='A'
ELSE IF (SCORE>=80) THEN GRADE='A'
ELSE IF(SCORE>=70) THEN GRADE='C'
ELSE IF(SCORE>=60) THEN GRADE='D' ELSE
GRADE='E' END IF
PRINT*,'SCORE=;
SCORE,GRADE=;GRADE
END PROGRAM EXAM 4B
输入SCORE=79 输出GRADE=C
(3) PROGRAM EXAM3 IMPLICIT NONE
REAL::A,B,C,D,X1,X2
READ*A,B,C D=B*B-4.0*A*C
IF(ABSCD) PRINT*,'X1=X2='X1 ELSE IF(D>0,0) THEN X1=(-B+SQRTCD))/(2.0*A) X1=(-B-SQRTCD))/(2.0*A) PRINT*,'X1=1',X1'X2='X2 ELSE PRINT*,'X1=', -B/(2.0*A),'+',SQRT(ABSCD1)/(2.0*A),'I' PRINT,'X1=', -B/(2.0*A),'-',SQRT(ABSCD1)/(2.0*A),'I' END IF END IF END PROGRAM EXAM3 输入 2,5,3 输出X1=-1.000000 X2=-1.500000 实验报告5 1.下面程序功能是求正整数M,N的最小公倍数。在标注行有错,请改正。 PROGRAM EXAMPLE IMPLICIT NONE INTEGER::M,N,K,T,I READ*,M,N I=1 IF (M DO WHILE ( MOD(K,N) =0) !<==ERROR2 I=I+1 K=K*I !<==ERROR3 END DO PRINT *,K ERROR1处正确的语句是:IF(M 2.下面程序功能是判断一个三位正整数N是否是素数,若是则输出“YES”,否则输出“NO”。 在标注行有错,请改正。 程序如下: PROGRAM EXAM IMPLICIT NONE INTEGER::N,I LOGICAL::L L=.TRUE. READ(*,'(F3)') N !<==ERROR1 DO I=2,N/2 IF(MOD(N,I)=0) !<==ERROR2 PRINT *,'NO' L=.FALSE. EXIT END IF END DO IF(L=.TRUE.) PRINT *,'YES' !<==ERROR3 END ERROR1处正确的语句是:I3 ERROR2处正确的语句是:IF(MOD(N,I)= =0) THEN ERROR3处正确的语句是:IF(L) PRINT *,'YES' 1) 输入两个正数M、N,求最大公约数和最小公倍数。 PROGRAM EXAM1 IMPLICIT NONE INTEGER::M,N,R,Y,B READ*,M,N B=M*N DO R=MOD(M,N) IF(R= =0) EXIT M=N;N=R END DO Y=N B=B/Y PRINT ‘(1X,”最大公约数是:”,I6)’,Y PRINT ‘(1X,”最小公倍数是:”,I6)’,B END PROGRAM EXAM1 (?1)/( N*( N+1 ) )的值,⑵ 求S=1-1/( 1*2 )+1/( 2*3 )+??+直到某项绝对值小于10为 PROGRAM EXAM2 IMPLICIT NONE INTEGER::N=0,F=1 REAL::S=0.0,T=1.0 DO WHILE(ABS(T)>=1E-5) N=N+1 F=F*(-1) S=S+T T=1.0/(N*(N+1)) T=T*F END DO PRINT*,”S=”,S END PROGRAM EXAM2 运行结果 S=6.137006E-01 判断400到500之间的书是否为素数,并计算素数的个数 PROGRAM EXAM3 IMPLICIT NONE INTEGER::I,J,N=0 DO I=400,500 DO J=2,I/2 IF(MOD(I,J)= =0) EXIT END DO IF(J>I/2) N=-N+1 END DO PRINT ‘(1X,“素数的个数为:”,I3)’,N END PROGRAM EXAM3 素数个数为17个 N?5