C语言改错:利用公式e=1+1/1!+1/2!+1/3!+.....+1/n!求e的近似值

#include<stdio.h>
long fact(int n)
{
long i=1;
i=i*n;
return i;
}
void main()
{
long e,p;
int i=0;
e=0;
p=1;
while(p>=0.00001)
{
i=i+1;
p=1/fact(i);
e=p;
}
printf("e=%7.3f\n",e);
}

程序中的错误比较多,首先是计算阶乘的函数,他明显应该是有循环的。不是直接的简单一个数字。
其次是一的表示明显应该是是实数类型。你使用了长整型,这是错的。还有两个整数的除法,它的商仍然是一个整数,所以你原来程序中的p的计算就永远是0。
下面是改好的程序和运行的结果。
#include
long fact(int n)
{ long i=1;
while(n)i=i*n--;
return i;
}
void main()
{ double e,p;
int i=0;
e=0;
p=1;
while(p>=0.00001)
{ p=1.0/fact(i);
e+=p;
i=i+1;
}
printf("e=%7.3f\n",e);
}

温馨提示:内容为网友见解,仅供参考
无其他回答

C++编程:根据公式e=1+1\/1!+1\/2!+1\/3!+...+1\/n!,求e的近似值,精确到最后...
double e,t;int n;for(t=e=n=1;t>=1.0E-5;e+=t\/=n++);cout << "e≈" << e << endl;return 0;}

e=1+1\/1!+1\/2!+1\/3!+...1\/n! 编写程序用这个公式计算e的近似值 这里是...
e+=1.0\/t;} printf("%f", e);return 0;}

用python求。根据公式e=1+1\/1!+1\/2!+..1\/n 求e的近似值?
tmp*=i;sum += 1\/tmp;print("e的近似值(精度为10**-6)为%.6f"%sum)输出结果是2.718282;

C语言编写,求e的值.e≈1+1\/1!+1\/2!+1\/3!+……+1\/n!
define N 50 int main(int argc, char* argv[]){ double e=1,t=1;int t1;for (t1=2;t1<=N;++t1){ t*=(double)1\/t1;e+=t;} printf("%lf",e);return 0;} \/\/--- 2.\/\/--- include <stdio.h> const

C语言编程序,求e的近似值e≈1+1\/2!+1\/3!+…+1\/n!
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;} ...

求C语言编程,e=1+1\/1!+1\/2!+1\/3!+...+1\/n!,精确度1e-6
include<iostream> using namespace std;int main(){ int i=1;double e=1.0,d=1.0;while(d>=1e-6){ d=d\/i;e+=d;i++;} cout<<"e的值为:"<<e<<endl;return 0;}

根据公式 e = 1 + 1\/1! + 1\/2! + 1\/3! + …….+ 1\/n! 计算e的值,直到...
float fas(int n);int main(void){ double sum=0.0,t;int i;i=1;t=1.0;while(t>(1e-6)){ sum=sum+t;t=1\/fas(i);i++;} printf("e=%lf",sum);} float fas(int n){ float y;if(n<0)printf("data error");else { if(n==0||n==1)y=1;else y=fas(n-1)*n;...

c 语言编程题:求e e=1+1\/1!+1\/2!+1\/3!+...
N取得越大,精度越高!\/***以下为代码***\/ int main(){ float e = 1;int i, j, den, N = 100000;for(i=1,i<N,i++){ den = 1;for(j=i,j>0,j--)den = den * j;e = e + 1\/den;} printf("%6.2f",&e);return 0;} ...

c语言求e=1+1\/1!+1\/2!+1\/3!+1\/4!+...
问题没说清楚是怎么求,所以这里我决定求第n项的e(n通过控制台输入获取,例如n=3,则e=1+1\/1!+1\/2!。)。这是我的代码:include <stdio.h> int jiecheng(int n)\/\/阶乘函数(利用递归方式计算){ if (n == 1)\/\/递归结束条件,如果n等于1 { return 1;\/\/返回终值 } return n * ...

C语言 编写程序求e的值 e=1+1\/1!+1\/2!+1\/3!+...
;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);} } 得到的值为:2.7182818011463845...随着n值越专大得到的e值越精属确。

相似回答