C语言:求e的近似值

Python032

C语言:求e的近似值,第1张

这题目有点奇怪:计算精度到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

}