这题目有点奇怪:计算精度到10^-4为止,输出却要到12位小数(要那么多位不准确的数?)
#include<stdio.h>int main()
{int i,t=1
double e=0
for(i=1t<10000i++)
{e+=1.0/t
t*=i
}
printf("%.12lf\n",e)
return 0
}
楼主你好!首先你的公式我认为是错的!前面第一项漏加了个1
正确的公式为:e=1+1/1!+1/2!+1/3!+......+1/n!
代码实现如下:
#include<stdio.h>
int
fun(int
n)
{
if(n
==
1)return
1
return
n*fun(n-1)
}
int
main()
{
double
sum
=1.0
int
i
=
1
while((1.0/fun(i))>=1e-8)
{
sum
+=(1.0/fun(i))
i++
}
printf("%.8lf",sum)
}
运行结果为2.71828183
网上查到的值2.718281828459
由此可知,前8位小数基本一样!
希望我的回答对你有帮助!
望采纳!谢谢!
分析:有两种情况(1)计算前n项
源程序如下:
#include<stdio.h>
int
main()
{
double
item=1,sum=1
int
n,i
scanf("%d",&n)
for(i=1i<=ni++)
{
item*=1.0/i
sum+=item
}
printf("The
sum
is
%lf\n",sum)
return
0
}
(2)计算各项直到最后一项小于10^(-4)
源程序如下:
#include<stdio.h>
#include<math.h>
int
main()
{
double
item=1,sum=1,n=1
do
{
item*=1.0/n
sum+=item
n++
}while(fabs(item)>=1e-4)
printf("The
sum
is
%lf\n",sum)
return
0
}