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

要求直至最后一项的值<10的-6次方,追10分不要用那种复杂的,我现在是初学者,我还太小,才十岁,麻烦讲清楚点,请不要用TEMP,longunsignedlongtemp... 要求直至最后一项的值<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年版),大家请从初学到第五章的新手的角度编写程序,谢谢了。
展开
 我来答
手机用户96398
2011-08-29 · 超过29用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:89.2万
展开全部
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次方),要简单点的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sollidwork
2011-09-06 · 超过20用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:54.9万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gouyun0922
2011-09-05 · TA获得超过151个赞
知道小有建树答主
回答量:246
采纳率:100%
帮助的人:119万
展开全部
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nanbotong
推荐于2018-04-05
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
#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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式