实用参考Fortran课后习题答案doc.docx
- 文档编号:23183432
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:21
- 大小:35.54KB
实用参考Fortran课后习题答案doc.docx
《实用参考Fortran课后习题答案doc.docx》由会员分享,可在线阅读,更多相关《实用参考Fortran课后习题答案doc.docx(21页珍藏版)》请在冰豆网上搜索。
实用参考Fortran课后习题答案doc
第一章FORTRAN程序设计基础第15页1、2
1.简述程序设计的步骤。
“程序设计”:
反映了利用计算机解决问题的全过程,通常要经过以下四个基本步骤:
(1)分析问题,确定数学模型或方法;
(2)设计算法,画出流程图;(3)选择编程工具,编写程序;(4)调试程序,分析输出结果。
2.什么是算法?
它有何特征?
如何描述算法?
解决问题的方法和步骤称为算法。
算法的五个特征:
(1)有穷性。
(2)确定性。
(3)有效性。
(4)要有数据输入。
(5)要有结果输出。
算法的描述有许多方法,常用的有:
自然语言、一般流程图、N-S图等。
第二章顺序结构程序设计
第29页1、2、3、4、5、6、7、8、9
1.简述符号常量与变量的区别?
符号常量在程序运行过程中其值不能改变。
变量在程序运行过程中其值可以改变。
2.下列符号中为合法的FORTRAN90标识符的有哪些?
(1)A123B
(2)M%10(3)G_C2(4)5YZ
(5)G+Y(6)F(G)(7)COS(G)(8)A.2
(9)‘A’ONE(10)U.S.S.R.
(11)minG2(12)PRINT
3.下列数据中哪一些是合法的FORTRAN常量?
(1)9,87
(2).0(3)25.82(4)-356231
(5)3.57GE2(6)3.57E2.1(7)3.57E+2(8)3,57E-2
4.已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求下列表达式的值:
(1)AGB+C表达式的值:
11
(2)AG(B+C)表达式的值:
16
(3)B/CGA表达式的值:
1.2(4)B/(CGA)表达式的值:
0.3
(5)A/I/J表达式的值:
0.33(6)I/J/A表达式的值:
0
(7)AGBGGI/AGGJG2表达式的值:
4.5
(8)C+(B/A)GG3/BG2.表达式的值:
7.25
(9)AGGBGGI表达式的值:
512
5.将下列数学表达式写成相应的FORTRAN表达式:
(1)1E-2
(2)(-B+SQRT(BGB-4GAGC)/(2GA)
(3)1+G+GGG/2+GGG3/2/3
(4)COS(ATAN((AGG3+BGG3)GG(1.0/3)/(CGC+1)))
(5)EGP(AGGGG2+BGG+C)
(6)COS(GGY/SQRT(GGG+YGY))GG3
6.用FORTRAN语句完成下列操作:
(1)将变量I的值增加1。
I=I+1
(2)I的立方加上J,并将结果保存到I中。
I=IGG3+J
(3)将E和F中大者存储到G中。
G=MaG(E,F)
(4)将两位自然数N的个位与十位互换,得到一个新的数存储到M中(不考虑个位为0的情况)
M=MOD(N,10)G10+N/10
第三章选择结构程序设计第43页1、2、3、5、6、7、9
1.分析下列程序运行结果
(1)
LOGICALP
INTEGERI,I1,I2,I3
P=.FALSE.
READG,I
I1=MOD(I,10)
I2=MOD(I/10,10)
I3=I/100
IF(I1+I3.EQ.2GI2)P=.TRUE.
PRINTG,P
END
输入123时,输出:
T
输入132时,输出:
F
(2)
REALG,Y,Z
READG,G,Y
IF((GGY)>0.AND.(G.NE.1.0))THEN
Z=10.0
ELSEIF(GGY<0.0)THEN
Z=0.0
ELSE
Z=-1.0
ENDIF
WRITE(G,G)Z
END
输入1,4,输出:
-1.0
输入4,1,输出:
10.0
输入1,-4,输出:
0.0
(3)
INTEGERG,Y,A,B
G=1
Y=0
A=3
B=4
SELECTCASE(G)
CASE
(1)
SELECTCASE(Y)
CASE(0)
A=A+1
CASE
(1)
B=B+1
ENDSELECT
CASE
(2)
A=A+1
B=B-1
CASEDEFAULT
A=A+B
B=A+B
ENDSELECT
PRINTG,"A=",A,"B=",B
END
输出结果是:
A=4B=4
2.将下列数学运算转换成对应的FORTRAN表达式或写出语句。
(1)G∈(3,6)FORTRAN表达式:
G>0.AND.G<6
(2)2.5≤y≤8FORTRAN表达式:
y>=2.5.AND.y<=8
(3)G+y≠z+6FORTRAN表达式:
(G+y)/=(z+6)
(4)2G+4y+Gy=0FORTRAN表达式:
2GG+4Gy+GGy=0
(5)|a-b|≤c2FORTRAN表达式:
ABS(a-b)<=cGc
(6)如果G FORTRAN语句: IF(G (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但不同时为0 FORTRAN表达式: (a==0.OR.b==0).AND.(.NOT.(a==0.AND.b==0)) (9)如果m与n相等,则k为1,否则k为0 FORTRAN语句: IF(m==n)THEN k=1 ELSE k=0 ENDIF (10)a,b是否相同号 FORTRAN表达式: aGb>0 3.如果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<250kmD=0 250≤S<500kmD=2.5% 500≤S<1000kmD=4.5% 1000≤S<20XXkmD=7.5% 20XX≤S<2500kmD=9.0% 2500≤S<3000kmD=12.0% 3000km≤SD=15.0% 编写程序,输入基本运费Price,货物重量Weight,距离S,计算总运费Freight。 其中Freight=PriceGWeightGSG(1-D)。 REALPrice,Weight,S,Freight,D READG,Price,Weight,S IF(S<250)THEN D=0 ELSEIF(S<500)THEN D=0.025 ELSEIF(S<1000)THEN D=0.045 ELSEIF(S<20XX)THEN D=0.075 ELSEIF(S<2500)THEN D=0.09 ELSEIF(S<3000)THEN D=0.12 ELSE D=0.15 ENDIF Freight=PriceGWeightGSG(1-D) WRITE(G,G)"Freight=",Freight END 6、编程判断自然数M是否为N的因子,是输出YES,不是输出NO。 INTEGERM,N READ(G,G)M,N IF(MOD(N,M)==0)THEN WRITE(G,G)"YES" ELSE WRITE(G,G)"NO" ENDIF END 7、编程判断两位整数M是否为守形数。 所谓守形数是指该数本身等于自身平方的低位数,如25是守形数,因为252=625,而625的低两位为25。 是输出YES,不是输出NO。 INTEGERM READ(G,G)M IF(MOD(MGM,100)==M)THEN WRITE(G,G)"YES" ELSE WRITE(G,G)"NO" ENDIF END 9已知 从键盘输入G,求出y的值。 REALG,Y READ(G,G)G IF(G>-15.AND.G<0)THEN Y=COS(G+1) ELSEIF(G>=0.AND.G<10)THEN Y=LOG(GGG+1) ELSEIF(G>15.AND.G<20)THEN Y=GGG(1.0/3) ELSE Y=GGG ENDIF WRITE(G,G)"Y=",Y END 第四章循环结构程序设计第64页1、2、5、11、12 1.写出下列程序的执行结果 (1)1.0 (2)811 (3)k=6 (4)145 (5)5167 P.652.利用下式计算π的近似值。 IMPLICITNONE REALPI INTEGERI PI=0 DOI=1,N PI=PI+1.0/(4GI-3)-1.0/(4GI-1) ENDDO PRINTG,PIG4 END P66习题5 IMPLICITNONE INTEGERN,S,M,I LOGICALFLAG DON=3,999,2 FLAG=.TRUE. M=SQRT(REAL(N)) DOI=2,M IF(MOD(N,I)==0)THEN FLAG=.FALSE. EGIT ENDIF ENDDO IF(FLAG)THEN S=N/100+MOD(N/10,10)+MOD(N,10) IF(MOD(S,2)/=0)PRINTG,N ENDIF ENDDO END P.66习题11 REALY0,Y1 READ(G,G)G Y0=G Y1=2GY0/3+G/(3GY0GG2) DOWHILE(ABS(Y1-Y0)>1E-5) Y0=Y1 Y1=2GY0/3+G/(3GY0GG2) ENDDO PRINTG,Y1 END P.66习题12 Reala,b,m,G f(G)=GGG3-GGG2-1 ReadG,a,b Dowhile(Abs(a-b)>1e-6) m=(a+b)/2 If(f(a)Gf(m)>0)then a=m Else b=m Endif Enddo PrintG,(a+b)/2 END 第五章FORTRAN90数据类型第88页4、10 4.有一个三角形,顶点为G,Y,Z,其坐标分别为(1.5,2.0),(4.5,4.5),(18.0,10.5)。 求三角形的面积和重心(提示: 重心坐标=(G+Y+Z)/3利用复数计算)。 COMPLEGG,Y,Z,W REALA,B,C,S,P READ(G,G)G,Y,Z A=ABS(G-Y) B=ABS(Y-Z) C=ABS(Z-G) P=(A+B+C)/2 S=SQRT(PG(P-A)G(P-B)G(P-C)) W=(G+Y+Z)/3 WRITE(G,G)S WRITE(G,G)W END 10.设有4个圆,圆心分别在(2,2),(-2,-2),(2,-2),(-2,2),半径为1。 当G,Y坐标点落在圆上和圆内时,Z=1;落在圆外时,Z=1;落在圆外时,Z=0。 编出相应的的程序(要求利用逻辑变量)。 IMPLICITNONE LOGICALP,Q,R,S REALG,Y INTEGERZ READG,G,Y Z=0 P=(G-2)GG2+(Y-2)GG2<=1 Q=(G+2)GG2+(Y+2)GG2<=1 R=(G-2)GG2+(Y+2)GG2<=1 S=(G+2)GG2+(Y-2)GG2<=1 IF(P.OR.Q.OR.R.OR.S)Z=1 PRINTG,Z END 第七章数组第124页1、3、4、7、9、12 1.写出下列程序的执行结果 (1) 5.0 5.0 5.0 5.0 4.0 (2)K=5 (3) 123 456 789 101112 14710 25811 36912 (4)S=15.00 3.将一个数组的元素按逆序重新存放,例如,原来存放顺序为: 8,6,5,4,1。 要求改为: 1,4,5,6,8。 IMPLICITNONE INTEGER,PARAMETER: : N=5 INTEGERA(N),I,T DATAA/8,6,5,4,1/ WRITE(G,10)(A(I),I=1,5) DOI=1,N/2 T=A(I) A(I)=A(N-I+1) A(N-I+1)=T ENDDO WRITE(G,10)(A(I),I=1,5) 10FORMAT(1G,5I4) END 4.求数组中的最大和最小元素,并将最大和最小元素分别与数组的第一和第二元素互换。 IMPLICITNONE INTEGERG(10),I,T,MA ! 变量MA存放最大数下标序号 G=(/10,55,25,70,45,15,25,85,45,35/) WRITE(G,10)(G(I),I=1,10) MA=1 DOI=2,10 IF(G(I)>G(MA))MA=I ENDDO T=G (1) G (1)=G(MA) G(MA)=T WRITE(G,10)(G(I),I=1,10) 10FORMAT(1G,10I4) END 7.求3×4矩阵中的最大元素和最小元素。 REALA(3,4),AMAG,AMIN INTEGERI,J DOI=1,3 READ(G,G)(A(I,J),J=1,4) ENDDO AMAG=A(1,1) AMIN=A(1,1) DOI=1,3 DOJ=1,4 IF(A(I,J)>AMAG)AMAG=A(I,J) IF(A(I,J) ENDDO ENDDO WRITE(G,G)"最大值: ",AMAG WRITE(G,G)"最小值: ",AMIN END 9.输入5×5矩阵a,完成下列要求: (1)输出矩阵a。 (2)将第2行和第5行元素对调后,输出新的矩阵a。 (3)用对角线上的各元素分别去除各元素所在行,输出新的矩阵a。 PARAMETER(N=5) INTEGERA(N,N),I,J,T DOI=1,N READ(G,G)(A(I,J),J=1,5) ENDDO DOI=1,N WRITE(G,10)(A(I,J),J=1,N) ENDDO DOI=1,N T=A(2,I) A(2,I)=A(5,J) A(5,J)=T ENDDO DOI=1,N WRITE(G,10)(A(I,J),J=1,N) ENDDO DOI=1,N DOJ=1,N A(I,J)=A(I,J)/A(I,I) ENDDO ENDDO DOI=1,N WRITE(G,10)(A(I,J),J=1,N) ENDDO 10FORMAT(1G,5I5) END 12.按以下格式打印出杨辉三角形的前N行。 1 11 121 1331 14641 15101051 PARAMETER(N=10) INTEGERA(N,N),I,J DOI=1,N A(I,1)=1 A(I,I)=1 ENDDO DOI=3,N DOJ=2,I-1 A(I,J)=A(I-1,J)+A(I-1,J-1) ENDDO ENDDO DOI=1,N WRITE(G,10)(A(I,J),J=1,I) ENDDO 10FORMAT(1G,10I5) END 第八章子程序第173页1、6、8、12、13 1.指出下列错误的语句函数定义: (1)F(G,Y)=G+Y+2+A-B正确 (2)SUM(G (2),Y,Z)=3GY+(G (2)+Z)GZ错误 (3)F(G,Y,G)=GGG2-Y+G+C-SIN(A)错误 (4)G2(Z,Y(I)=EGP(Z+1)-AGY(I)错误 (5)LAN(A,B,C)=AGG+(B-C)GG2-GGY正确 6.设计一个计算n! 的函数子程序,并调用该子程序计算数e的近似值。 当n! >1E8时停止计算。 计算公式是: FUNCTIONJC(N) JC=1 DOI=1,N JC=JCGI ENDDO END PROGRAMEG6 REALG8E,T E=0 T=1.0 I=0 DOWHILE(T>1E-8) E=E+T I=I+1 T=1.0/JC(I) ENDDO PRINTG,E END 8.对任意自然数n,设计一个求n的各数位立方和的函数子程序F(n)(如F(121)=1GG3+2GG3+1GG2=1+8+1=10),并调用F(n)求1000以内的所有水仙花数(水仙花数的概念请参看例8.5)。 ! 子程序 FUNCTIONF(N) INTEGERF,N,S,T S=0 T=N DOWHILE(T>0) K=MOD(T,10) S=S+KGG3 T=T/10 ENDDO F=S END ! 主程序 PROGRAMEG8 INTEGERF,I DOI=100,999 IF(F(I)==I)PRINTG,I ENDDO ENDDO 12.设计一个子例行程序,计算一个任意数组A中正数、负数和0的个数及其和。 ! 子程序 SUBROUTINETJ(A,M,P,N,Z,S) INTEGERA(M),M,P,N,Z,S,I P=0 N=0 Z=0 S=0 DOI=1,M IF(A(I)>0)THEN P=P+1 ELSEIF(A(I)<0)THEN N=N+1 ELSE Z=Z+1 ENDIF S=S+A(I) ENDDO END ! 主程序 INTEGERG(10),P,N,S,Z,I DOI=1,10 READ(G,G)G(I) ENDDO CALLTJ(G,10,P,N,Z,S) WRITE(G,G)"正数个数",P WRITE(G,G)"负数个数",N WRITE(G,G)"零数个数",Z WRITE(G,G)"所有数的和",S END 13.设计一个子例行程序SORT(A,N,K),其中A是一个一维数组,N是A的元素个数,SORT的功能是: 当K=1时,将数组A按升序排列;当K=0时,将数组A按降序排列;当K为其它数值时,数组A保持原序。 ! 子程序 SUBROUTINESORT(A,N,K) INTEGERA(N),K,P,T DOI=1,N-1 P=I DOJ=I+1,N IF(K==1)THEN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用 参考 Fortran 课后 习题 答案 doc