厦门理工吴荣彬fortran 77作业.docx
《厦门理工吴荣彬fortran 77作业.docx》由会员分享,可在线阅读,更多相关《厦门理工吴荣彬fortran 77作业.docx(12页珍藏版)》请在冰豆网上搜索。
![厦门理工吴荣彬fortran 77作业.docx](https://file1.bdocx.com/fileroot1/2023-7/4/c02ac8af-0d9e-43b7-b2cf-f4efeed12fc9/c02ac8af-0d9e-43b7-b2cf-f4efeed12fc91.gif)
厦门理工吴荣彬fortran77作业
8、找出100~999之间的所有“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如,153=1*1*1+3*3*3+5*5*5,故153是水仙花数。
解:
编程如下:
DO100I=1,8,1
DO200J=0,9,1
DO300K=0,9,1
A=100*I+10*J+K
B=I**3+J**3+K**3
IF(A.EQ.B)THEN
PRINT*,’A=’,A
ELSE
ENDIF
300CONTINUE
200CONTINUE
100CONTINUE
END
十六、用WHILE语句;用块IF语句和GOTO语句,写程序,求
。
解:
编程如下:
用WHILE语句:
N=1
I=1
W=0
DO10WHILE(I.LE.10)
N=N*I
I=I+1
W=W+N
10CONTINUE
PRINT*,'W=',W
END
用块IF语句和GOTO语句:
N=1
I=1
W=0
10IF(I.LE.10)THEN
N=N*I
I=I+1
W=W+N
GOTO10
ENDIF
PRINT*,'W=',W
END
18、将{例5.12}改用直到型循环编写程序。
解:
编程如下:
READ*,N
J=SQRT(REAL(N))
I=2
DO10UNTIL(I.GT.J).OR.(MOD(N,I).EQ.0)
I=I+1
10CONTINUE
IF(I.GT.J)THEN
PRINT*,'N,ISAPRIMENUMBER.'
ELSE
PRINT*,N,'ISNOTAPRIMENUMBER.'
ENDIF
END
4、有一三角形,顶点为X、Y、Z,其坐标分别为(1.5,2.0),(4.5,4.5),(18.0,10.5)。
求三角形面积和三角形重心。
(提示:
重心坐标=(X+Y+Z)/3.0)
编程如下:
COMPLEXX,Y,Z,BARYCENTRE
X=(1.5,2.0)
Y=(4.5,4.5)
Z=(18.0,10.5)
A=ABS(X-Y)
B=ABS(X-Z)
C=ABS(Y-Z)
S=(A+B+C)/2.0
AREA=SQRT(S*(S-A)*(S-B)*(S-C))
BARYCENTRE=(X+Y+Z)/3.0
PRINT*,'A=',A,'B=',B,'C=',C
PRINT*,'AREA=',AREA,'BARYCENTRE=',BARYCENTRE
END
1、写出用下面的编辑符输出整数的结果。
编程如下:
INTEGERA,B,C,D,E,F,G,H
A=12
B=-123
C=8750
D=-10
E=20
F=154
G=128
H=17612
WRITE(*,100)A,B,C,D,E,F,G,H
100FORMAT(1X,2I3,3X,2I4,3X,I7,3X,I4.3,3X,I7.2,3X,I9.4)
END
变量值
12
-123
8750
20
-10
154
128
17612
编辑符
I3
I3
I4
I7
I4
I4.3
I7.2
I9.4
打印结果
︹12
***
8750
︹︹︹︹︹20
︹-10
︹154
128
17612
2、写出用下面输出实数的结果。
编程如下:
A=12.67
B=-137.5
C=1875.837
D=-8756.7345
E=1234.567
F=0.01814
G=-1.56E+2
H=16.785
WRITE(*,100,200)A,B,C,D,E,F,G,H
100FORMAT(1X,F7.2,3X,F10.2,3X,F8.2,3X,F6.1,3X,F7.4,3X,E12.4,3X,E15.6,3X,E18.6E3)
200FORMAT(1X,G10.4,3X,G12.5,3X,G12.5,3X,G14.7,3X,G11.6,3X,G9.4,3X,G9.4,3X,G11.4)
END
变量值
12.67
-137.5
1875.837
-8756.7345
1234.567
0.01814
-1.56X
16.785
编辑符
F7.2
F10.2
F8.2
F6.1
F7.4
E12.4
E15.6
E18.6E3
打印结果
︹︹12.67
︹︹︹-137.50
︹1875.84
******
*******
︹︹︹.1814E-01
︹︹︹-.156000E+03
︹︹︹︹︹︹.167850E+002
编辑符
G10.4
G12.5
G12.5
G14.7
G11.6
G9.4
G9.4
G11.4
打印结果
12.67
-137.50
1875.8
-8756.734
1234.57
.1814E-01
*********
16.78
1、用梯形法求:
区间数分别为n=10,100,1000,5000.
编程如下:
READ(*,*)A,B,N
X=A
H=(B-A)/N
S=0.0
DO10,I=1,N
SI=(1+EXP((I-1)*H)+1+EXP(I*H))*H/2.0
S=S+SI
10CONTINUE
WRITE(*,100)A,B,N
WRITE(*,200)S
100FORMAT(1X,'A=',F10.3,3X,'B=',F10.3,3X,'N=',I4)
200FORMAT(1X,'S=',F15.8)
END
在区间【0,1】积分:
(理论上N越大,计算所用时间会越长。
)
区间数N
10
100
1000
5000
面积S
2.71971400
2.71829600
2.71828100
2.71828200
4、用牛顿迭代法求
的根。
如果迭代了10次还未达到
,就认为不收敛,打印出相应信息、运行程序。
编程如下:
READ(*,*)X1
DO10,I=1,10,1
F=X1**2-4.0*X1+1
F1=2.0*X1-4
X=X1-F/F1
X2=X1
X1=X
10CONTINUE
IF(ABS(X2-X1).LE.1E-6)THEN
WRITE(*,100)X2,X
100FORMAT(1X,'X2=',F15.7,3X,'X=',F15.7)
ELSE
WRITE(*,*)'ISNOTCONVERGENCE.'
ENDIF
END
3、输入若干学生一门课的成绩,统计各分数段的人数。
凡不及格(60分以下)都由一个计数器来统计,其他以10分作为一个分数段,100分作为一个分数段。
编程如下:
PARAMETER(NS=20)
INTEGERC(0:
5)
DIMENSIONS(NS)
DATAC/6*0/
WRITE(*,*)'ENTER',NS,'STUD.SCORE:
(5/LINE)'
READ(*,100)(S(I),I=1,NS)
DO10I=1,NS
IF(S(I).LT.60)C(0)=C(0)+1
IF(S(I).GE.60.AND.S(I).LT.70)C
(1)=C
(1)+1
IF(S(I).GE.70.AND.S(I).LT.80)C
(2)=C
(2)+1
IF(S(I).GE.80.AND.S(I).LT.90)C(3)=C(3)+1
IF(S(I).GE.90.AND.S(I).LT.99)C(4)=C(4)+1
IF(S(I).EQ.100)C(5)=C(5)+1
10CONTINUE
WRITE(*,300)
WRITE(*,*)'0-5960-6970-7980-8990-99100-'
WRITE(*,300)
WRITE(*,200)(C(I),I=0,5)
WRITE(*,300)
100FORMAT(5F6.0)
200FORMAT(1X,I3,5I7)
300FORMAT(1X,65('-'))
END
2、求出X的值。
1、FUNC(U,V)=ATAN(U/V)**2/V
A
(1)=1.0
A
(2)=A
(1)**2+1.0
X=FUNC(A
(1),A
(2))
3、FUN(A)=1+A
X=FUN(FUN(FUN(1.0)))
5、TRST(B,X)=A*X+B
A=2.0
H=10.0
TT=16.0
X=TRST(H/4.0,SQRT(TT))
编程如下:
1、FUNC(U,V)=ATAN(U/V)**2/V
A1=1.0
A2=A1**2+1.0
X=FUNC(A1,A2)
PRINT*,X
END
答案:
X=1.074845E-01
2、FUN(A)=1+A
X=FUN(FUN(FUN(1.0)))
PRINT*,X
END
答案:
X=4.000000
5、TRST(B,X)=A*X+B
A=2.0
H=10.0
TT=16.0
X=TRST(H/4.0,SQRT(TT))
PRINT*,X
END
答案:
X=10.500000