c语言编程题,求e的近似值,e=1/1!+1/2!+1/3!+......+1/n!,累加项小于1

c语言编程题,求e的近似值,e=1/1!+1/2!+1/3!+......+1/n!,累加项小于10^-8,保留8位小数。谢谢各位大神了

楼主你好!
首先你的公式我认为是错的!前面第一项漏加了个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,谢谢解答

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-24

对着c语言入门写了几行,计算的是1/0!+1/1!+1/2!+1/3!+......+1/n!,

如果要算 1/1!+1/2!+1/3!+......+1/n!,请把代码中的 n1=1.0; 改为 n1=2.0

void main(){

 double e1,n1,n2;

 e1=0.0;

 n1=1.0;

 n2=1.0;

 while(e1+=n2,(n2/=n1++)>1e-8){   

  ;// printf("n=%f \te=%10.8f\n",n1,e1);

 }

 printf("e=%10.8f\n",e1);

}

 结果是 e=2.71828183

c语言编程题,求e的近似值,e=1\/1!+1\/2!+1\/3!+...+1\/n!,累加项小于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("%.8...

C语言编程序,求e的近似值e≈1+1\/2!+1\/3!+…+1\/n!
(1)计算前n项 源程序如下:include<stdio.h> int main(){ double item=1,sum=1;int n,i;scanf("%d",&n);for(i=1;i<=n;i++){ item*=1.0\/i;sum+=item;} printf("The sum is lf\\n",sum);return 0;} (2)计算各项直到最后一项小于10^(-4)源程序如下:include<stdio.h>...

C语言编写,求e的值.e≈1+1\/1!+1\/2!+1\/3!+……+1\/n!
int main(int argc, char* argv[]){ double e=0,t,t1;t=t1=1;while (t-(1e-4)>eps){ e+=t;t*=1\/++t1;} printf("%lf",e);return 0;} \/\/---

...要求求e的值,e约等于1+1\/1!+1\/2!+1\/3!+...+1\/N! 要求直至最后一项的...
include<stdio.h> void main(){ double b=1,a=1,n,i,j=1;while(a>=1e-7){ n=1;i=1;while(i<=j){ n=n*i;i++;} a=1\/n;b=a+b;j++;} printf("%f\\n",b);} 看不清楚你写的是小于10的几次方,我这是小于10的-7次方 ...

C语言 编写程序求e的值 e=1+1\/1!+1\/2!+1\/3!+...
n=n*i;s += 1.0 \/ n;} printf("e = %lf\\n", s);getchar();return 0;} 或:public class Test{ public static void main(String args[]){ double sum=1,n=1;double e=1;for(n=1;n<=10;n++){ sum=sum*n;e+=1\/sum;} System.out.println("e="+e);} } 得到的值为...

...语句编写程序计算e≈1+1\/1!+1\/2!+1\/3!+…+1\/n! .
你好 do-while语句实现如下:include<stdio.h> int f(int n){\/*自定义一个求阶乘的函数*\/ if(n==1||n==0)return 1;return n*f(n-1);} int main(){ double index,s=0;int n,i;printf("输入一个正整数n(n<34):");scanf("%d",&n);i=0;do{ index=1\/(1.0*f(i));s+...

编写程序计算e的值,e=1+1\/1!+1\/2!+1\/3!+1\/4!···
scandf("%d",%n);\/*请输入需求值e的阶乘 e = 0;\/*初始化e for(i = 0; i<=n;i++){ e = e + 1\/fac(n);\/* 计算值e = 1\/0!+1\/1!+1\/2!+...+1\/n!} Printf("e = %d",e);\/*将结果e输出至屏幕 } long fac(n)\/*计算n的阶乘 { return n?n*fac(n-1):1\/*如...

C++编程:根据公式e=1+1\/1!+1\/2!+1\/3!+...+1\/n!,求e的近似值,精确到最后...
代码文本:\/\/#include "stdafx.h"\/\/vc++ 6.0? Maybe should add this line.include <iostream> using namespace std;int main(int argc,char *argv[]){ double e,t;int n;for(t=e=n=1;t>=1.0E-5;e+=t\/=n++);cout << "e≈" << e << endl;return 0;} ...

C++编程:根据公式e=1+1\/1!+1\/2!+1\/3!…计算e的值,要求使用while循环...
include <iostream.h> \/\/using namespace std; \/\/这句我给注释掉了,否则老报错。int main() { int i=1; float s=1,t=1.0,e=1.0; while (t>=1e-4) { s*=i; t=1\/s; e+=t; i++; } cout<<"e="<<e<<endl; return 0;} 这是运行结果。

c语言求e=1+1\/1!+1\/2!+1\/3!+1\/4!+...
double e = 1.0;\/\/声明变量e并初始化 for (i = 2; i <= n; i++)\/\/声明for循环 { e += 1.0 \/ jiecheng(i);\/\/e加上当前计算结果(即1\/1!,1\/2!等)} printf("%f", e);\/\/输出e return 0;\/\/结束程序 } 大部分代码我都做了注释,希望你能理解这个程序。希望能帮到您。

相似回答