实用参考Fortran课后习题答案doc.docx

上传人:b****2 文档编号:23183432 上传时间:2023-05-15 格式:DOCX 页数:21 大小:35.54KB
下载 相关 举报
实用参考Fortran课后习题答案doc.docx_第1页
第1页 / 共21页
实用参考Fortran课后习题答案doc.docx_第2页
第2页 / 共21页
实用参考Fortran课后习题答案doc.docx_第3页
第3页 / 共21页
实用参考Fortran课后习题答案doc.docx_第4页
第4页 / 共21页
实用参考Fortran课后习题答案doc.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实用参考Fortran课后习题答案doc.docx

《实用参考Fortran课后习题答案doc.docx》由会员分享,可在线阅读,更多相关《实用参考Fortran课后习题答案doc.docx(21页珍藏版)》请在冰豆网上搜索。

实用参考Fortran课后习题答案doc.docx

实用参考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

IF(A(J)

ELSE

IF(A(J)>A(P))P=J

ENDIF

ENDDO

T=A(I)

A(I)=A(P)

A(P)=T

ENDDO

END

!

主程序

PARAMETER(N=10)

INTEGERG(10),I

READ(G,G)G

WRITE(G,10)(G(I),I=1,N)

CALLSORT(G,N,1)!

将数组A按升序排列

WRITE(G,10)(G(I),I=1,N)

CALLSORT(G,N,0)!

将数组A按降序排列

WRITE(G,10)(G(I),I=1,N)

10FORMAT(1G,10I5)

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1