c语言求e=1+1/1!+1/2!+1/3!+1/4!+......

 我来答
Ninja748
2019-08-10 · TA获得超过247个赞
知道小有建树答主
回答量:163
采纳率:88%
帮助的人:86.6万
展开全部
问题没说清楚是怎么求,所以这里我决定求第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 * jiecheng(n - 1); //否则继续递归计算
}
int main() //main函数
{
int n, i; //n为第几项,i为for循环的控制变量
scanf("%d", &n); //输入n
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; //结束程序
}

大部分代码我都做了注释,希望你能理解这个程序。

希望能帮到您。
追问
#include 
main()
{ int s=1,i=1;
float k=1.0,e=0,n=0;
for(i=1;i9e-100)
n+=k;
else break;
}
e=n+1;
printf("e=%f\n",e);
return 0;
}
追答
第9行有问题。
这里 1/s 是整型运算,因为1和s都为整型,所以这里进行的是整型运算而不是浮点运算。这意味着,返回的也是整型数值(整形运算中,不包含小数,比如1/2=0,3/2=1)。如果想改成浮点运算,就要运用到类型转换。可以这么改:
k=1.0/s;
这样就OK了,因为1.0是double类型,会隐式转换s的值为double类型,这样就进行了浮点运算。顺带一说,我觉得最好这样写:
k=1.0f/s;
就是在1.0后面加一个f,因为k是float类型,所以运算返回最好为float类型而不是double类型。
戴闻镶bW
2020-09-17
知道答主
回答量:3
采纳率:0%
帮助的人:1659
展开全部
#include<stdio.h>
void main()
{
int i,j,n;
double e=1,temp=1;
printf("n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
temp*=i;
e+=1/(double)temp;
}
printf("e=%f\n",e);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式