急需求助 一个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
有些急,谢谢
提示中说的是:
在中途推出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<