请教一C语言编程问题 新手学C。请多指教

来源:百度知道 编辑:UC知道 时间:2024/06/25 11:34:49
编写程序,求e的值 e≈1+1/1!+1/2!+1/3!+1/4!+……+1/n!
1.用FOR循环,计算机前50项
2.用while循环,要求直至最后一项的值小于1e-4(10的负四次方)

新手学C。请多指教

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int factorial(int n);
int main()
{ int i=1,m,n,temp=1;
double s=1;
float k;

while(1)
{

n=factorial(i);
k=(float)1/n;
s+=k;
i++;
if(fabs(k)<0.0001)
{temp=0;break;}
temp=1;
}
if(temp==0)printf("%lf",s);
system("pause");
}

int factorial(int n)
{
int i;
if(n==0)
return 1;
else
return n*=factorial(n-1);

}

运行结果为2.718279



FOR:

main()
{
int i;
int k;
float e=0;
float fl=0;

for(i=1;i<=50;i++)
{
fl=1;
for(k=1;k<=i;k++)
{
fl*=k;
}
fl=1/fl;
e+=fl;
}
printf("%f",e);
}

WHILE
main()
{
int i;
int