用while循环计算e≈1+1/1!+1/2!+1/3!+1/4!+ ......

要求直至最后一项的值<10的-6次方,追10分
不要用那种复杂的,我现在是初学者,我还太小,才十岁,麻烦讲清楚点,请不要用TEMP,long unsigned long temp=temp/n;,等函数,题中只是让我编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+.........
(2)用WHILE 循环,要求直至最后一项的值小于10ˉ6(10的-6次方),这应该是第五章内容,我的书是《全国计算机等级考试二级教程》-C语言程序设计(2011年版),大家请从初学到第五章的新手的角度编写程序,谢谢了。

第1个回答  2011-08-29
while语句循环的错误,t真的是按照1/1!,1/2!,1/3!这样变的吗?照你这样定义,第一循环t=1没错,第二循环,t++(t=2),t*=t(t=4),t=1/t(t=0.25),也不等于1/2!(0.5)啊。本身的算法就是错误的。 至少还应该再定义一个变量来表示后面每一项的分母。
for语句循环的错误,既未定义e的初始值,t也不是按照1/1!,1/2!,1/3!这样变的。

参考:
#include <stdio.h>
#include <math.h>
int f(int n)
{
long k=1;int i;
for(i=1;i<=n;i++)
k=k*i;
return k;
}
main()
{
float e=1,t;
int m=1;
while(fabs(t)>=1e-6)
{
t=1.0/f(m++);
e+=t;
}
printf("e=%f",e);
}
追问

你好,原题是这样的 编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+.........
(2)用WHILE 循环,要求直至最后一项的值小于10ˉ6(10的-6次方),要简单点的

第2个回答  2011-08-30
#include<stdio.h>
void main()
{
double n=1.0,temp=1.0,e=1.0;
do
{
temp=temp/n;
e+=temp;
n=n+1;
}while(temp>=1e-6);
printf("e=%lf\n",e);
}本回答被提问者采纳
第3个回答  2011-09-06
int n = 1, f = 1;
double e = 1.;

while( 1./f > 1E-6 )
{
e += 1. / f ; // 第一次:e = 1 + 1/1!
n++;
f *= n; //下一个1/n!
}
e += 1./f; //这个是把最后一项加上, 此项小于 1E-6
第4个回答  2011-09-05
#include<stdio.h>
#include<math.h>
long int fun(int x)/*定义求阶乘的函数*/
{
int i; long s=1;
for(i=1;i<=x;i++)
{
s=s*i;
}
return s;
}
void main()
{
float sum=1;
int i=0;
for(i=1;;i++)
{
sum=sum+1/fun(i);/调用fun函数*/
if((1/fun(i))<1e-6)*如果有一项小于10的-6次方*/
{ sum=sum+1/f(i);/*加上最后一个数*/ break;}
}
printf("e=%f\n",sum);
}
第5个回答  推荐于2018-04-05
#include<stdio.h>
int main()
{ double a=1.0,s=1.0;
int b=1,c=1;
while(a/(double)b>=1e-6)
{ s+= a/(double)b;
c++;
b*=c;
}
printf("%lf\n",s);
return 0;
}本回答被网友采纳
相似回答