急需求助 一个Fortran编程问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:26:33
改编程序:在用阶乘的倒数的和求e(数学常数)的程序(见以下模板)中,如何让程序到达指定精确度时停止计算,并输出此时的项数和e的近似值。

提示中说的是:
在中途推出do命令时使用exit命令.精确度由阶乗的倒数的大小来决定。

模板如下,貌似在这个基础上添加if命令来改编程序。

! Fortran 95 sample program

! *** Napier**
program napier

implicit none

integer n, i

real *8 fact,e

read *, n

fact = 1.0d0

e=1.0d0

do i = 1, n

fact = fact * i

e=1.d0/fact

print *, i, e

end do

end program napier

有些急,谢谢

你贴的源程序本身是错的,在倒数第4行有错。

根据可变精度要求的新程序如下:

program napier

implicit none

integer i

real *8 fact, e, epsilon

read *, epsilon

i = 1

fact = 1.0d0

e = 1.0d0

do while(.true.)

fact = fact * i

e = e + 1.0d0/fact

print *, i, e

if (1.0d0/fact < epsilon) exit

i = i+1

end do

end program napier

运行的时候手工输入一个小数表示精确度,比如 0.000000001,如下
============================================================
0.000000001
1 2.00000000000000
2 2.50000000000000
3 2.66666666666667
4 2.70833333333333
5 2.71666666666667
6 2.71805555555556
7 2.71825396825397
8 2.71827876984127
9 2.71828152557319
10 2.71828180114638<