第一章 FORTRAN程序设计基础第15页 1、21.简述程序设计的步骤。
“程序设计”:反映了利用计算机解决问题的全过程,通常要经过以下四个基本步骤:(1)分析问题,确定数学模型或方法;(2)设计算法,画出流程图;(3)选择编程工具,编写程序;(4)调试程序,分析输出结果。
2. 什么是算法?它有何特征?如何描述算法?解决问题的方法和步骤称为算法。
算法的五个特征:(1) 有穷性。
(2) 确定性。
(3) 有效性。
(4) 要有数据输入。
(5) 要有结果输出。
算法的描述有许多方法,常用的有:自然语言、一般流程图、N-S图等。
第二章顺序结构程序设计第29页 1、2、3、4、5、6、7、8、91.简述符号常量与变量的区别?符号常量在程序运行过程中其值不能改变。
变量在程序运行过程中其值可以改变。
2. 下列符号中为合法的FORTRAN 90标识符的有哪些?(1) A123B (2) M%10 (3) X_C2 (4) 5YZ(5) X+Y (6) F(X) (7) COS(X) (8) A.2(9) ‘A’ONE (10) U.S.S.R.(11) min*2 (12) PRINT3. 下列数据中哪一些是合法的FORTRAN常量?(1) 9,87 (2) .0 (3) 25.82(4) -356231(5) 3.57*E2 (6) 3.57E2.1 (7) 3.57E+2(8) 3,57E-24. 已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求下列表达式的值:(1) A*B+C 表达式的值: 11 (2) A*(B+C) 表达式的值: 16(3) B/C*A 表达式的值: 1.2 (4) B/(C*A) 表达式的值: 0.3(5) A/I/J 表达式的值: 0.33 (6) I/J/A 表达式的值: 0(7) A*B**I/A**J*2 表达式的值: 4.5(8) C+(B/A)**3/B*2. 表达式的值: 7.25(9) A**B**I 表达式的值: 5125. 将下列数学表达式写成相应的FORTRAN表达式:(1) 1E-2 (2)(-B+SQRT(B*B-4*A*C)/(2*A)(3) 1+X+X*X/2+X**3/2/3(4) COS(ATAN((A**3+B**3)**(1.0/3)/(C*C+1)))(5) EXP(A*X**2+B*X+C)(6) COS(X*Y/SQRT(X*X+Y*Y))**36. 用FORTRAN语句完成下列操作:(1) 将变量I的值增加1。
I=I+1(2) I的立方加上J,并将结果保存到I中。
I=I**3+J(3) 将E和F中大者存储到G中。
G=Max(E,F)(4) 将两位自然数N的个位与十位互换,得到一个新的数存储到M中(不考虑个位为0的情况)M=MOD(N,10)*10+N/10第三章选择结构程序设计第43页 1、2、3、5、6、7、91.分析下列程序运行结果(1)LOGICAL PINTEGER I,I1,I2,I3P=.FALSE.READ*,II1=MOD(I,10)I2=MOD(I/10,10)I3=I/100IF(I1+I3.EQ.2*I2)P=.TRUE.PRINT*,PEND输入123 时,输出: T输入132 时,输出: F(2)REAL X,Y,ZREAD*,X,YIF((X*Y)>0.AND.(X.NE.1.0))THENZ=10.0ELSE IF(X*Y<0.0) THENZ=0.0ELSEZ=-1.0ENDIFWRITE(*,*)ZEND输入1,4 ,输出: -1.0输入4,1 ,输出: 10.0输入1,-4 ,输出: 0.0(3)INTEGER X,Y,A,BX=1Y=0A=3B=4SELECT CASE(X)CASE(1)SELECT CASE(Y)CASE(0)A=A+1CASE(1)B=B+ 1END SELECTCASE(2)A=A+1B=B-1CASE DEFAULTA=A+BB=A+BEND SELECTPRINT*,"A=",A,"B=",BEND输出结果是:A=4 B=42.将下列数学运算转换成对应的FORTRAN表达式或写出语句。
(1) x∈(3,6) FORTRAN表达式: x>0.AND.x<6(2) 2.5≤y≤8 FORTRAN表达式: y>=2.5.AND.y<=8(3) x+y≠z+6 FORTRAN表达式: (x+y)/=(z+6)(4) 2x+4y+xy=0 FORTRAN表达式: 2*x+4*y+x*y=0(5) |a-b|≤c2FORTRAN表达式: ABS(a-b)<=c*c(6) 如果x<y或x<z,则min=xFORTRAN语句: IF(x<y.OR.x<z)min=x(7) 实数a,b,c能否构成三角形三边FORTRAN表达式: a>0.AND.b>0.AND.c>0.AND.(a+b)>c.AND.(b+c)>a.AND.(c+a)>b(8) a,b 之一为0但不同时为0FORTRAN表达式: (a==0.OR.b==0).AND.(.NOT.(a==0.AND.b==0))(9) 如果m与n相等,则k为1,否则k为0FORTRAN语句:IF(m==n)THENk=1ELSEk=0ENDIF(10) a,b是否相同号FORTRAN表达式: a*b>03.如果A=2.5,B=7.5,C=5.0,D=6.0,L=.TRUE.,M=.FALSE.,请求出下列逻辑表达式的值。
(1) (A+B).LT.(C+D).AND.A.EQ.3.5 逻辑表达式的值: .FALSE.(2) A+B/2.0.NE.C-D.OR.C.NE.D 逻辑表达式的值: .TRUE.(3) .NOT.L.OR.C.EQ.D.AND.M 逻辑表达式的值: .FALSE.(4) C/2.0+D.LT.A.AND..NOT..TRUE..OR.C.EQ.D 逻辑表达式的值: .FALSE.(5) (C.GT.D).OR.C.NOT.(A+B.LT.D) 该表达式错误(6) (A.LT.B).AND.(B.LT.A) 逻辑表达式的值: .FALSE.5、某运输公司在计算运费时,按照运输距离S对运费打一定的折扣D,其标准如下:S<250km D=0250≤S<500km D=2.5%500≤S<1000km D=4.5%1000≤S<2000km D=7.5%2000≤S<2500km D=9.0%2500≤S<3000km D=12.0%3000km≤S D=15.0%编写程序,输入基本运费Price,货物重量Weight,距离S,计算总运费Freight。
其中Freight=Price*Weight*S*(1-D)。
REAL Price, Weight, S, Freight, DREAD*, Price, Weight, SIF (S<250) THEND=0ELSEIF(S<500) THEND=0.025ELSEIF(S<1000) THEND=0.045ELSEIF(S<2000) THEND=0.075ELSEIF(S<2500) THEND=0.09ELSEIF(S<3000) THEND=0.12ELSED=0.15ENDIFFreight=Price*Weight*S*(1-D)WRITE(*,*)"Freight=", FreightEND6、编程判断自然数M 是否为N 的因子,是输出YES, 不是输出NO 。
INTEGER M,NREAD(*,*)M,NIF(MOD(N,M)= =0) THENWRITE(*,*)"YES"ELSEWRITE(*,*)"NO"ENDIFEND7、编程判断两位整数M 是否为守形数。
所谓守形数是指该数本身等于自身平方的低位数,如25是守形数,因为252=625,而625的低两位为25。
是输出YES, 不是输出NO 。
INTEGER MREAD(*,*)MIF(MOD(M*M,100)==M)THENWRITE(*,*)"YES"ELSEWRITE(*,*)"NO"ENDIFEND9 已知⎪⎪⎩⎪⎪⎨⎧<<<≤+<<-+=其他2322015100)1ln(015)1cos(x x x x x x x y 从键盘输入x ,求出y 的值。
REAL X,YREAD(*,*)XIF(X>-15.AND.X<0)THENY=COS(X+1)ELSEIF(X>=0.AND.X<10)THENY=LOG(X*X+1)ELSEIF(X>15.AND.X<20)THENY=X**(1.0/3)ELSEY=X*XENDIFWRITE(*,*)"Y=",YEND第四章 循环结构程序设计第64页 1、2、5、11、12 1.写出下列程序的执行结果(1) 1.0(2) 8 11(3) k= 6(4) 14 5(5) 5167P.65 2. 利用下式计算π的近似值。
)1000(14134171513114=---++-+-=n n n πIMPLICIT NONEREAL PIINTEGER IPI=0DO I=1,NPI=PI+1.0/(4*I-3)-1.0/(4*I-1)END DOPRINT*,PI*4ENDP66 习题5IMPLICIT NONEINTEGER N,S,M,ILOGICAL FLAGDO N=3,999,2FLAG=.TRUE.M=SQRT(REAL(N))DO I=2,MIF(MOD(N,I)==0)THENFLAG=.FALSE.EXITENDIFENDDOIF(FLAG) THENS=N/100+MOD(N/10,10)+MOD(N,10)IF(MOD(S,2)/=0)PRINT*,NENDIFEND DOENDP.66 习题11REAL Y0,Y1READ(*,*)XY0=XY1=2*Y0/3+X/(3*Y0**2)DO WHILE(ABS(Y1-Y0)>1E-5)Y0=Y1Y1=2*Y0/3+X/(3*Y0**2)ENDDOPRINT*,Y1ENDP.66 习题12Real a,b,m,xf(x)=x**3-x**2-1Read*,a,bDo while(Abs(a-b)>1e-6)m=(a+b)/2If(f(a)*f(m)>0)thena=mElseb=mEndifEnddoPrint*,(a+b)/2END第五章 FORTRAN 90数据类型第88页 4、104.有一个三角形,顶点为X,Y,Z,其坐标分别为(1.5,2.0),(4.5,4.5),(18.0,10.5)。