编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。1+1/2+....+1/n!输出保留5位小数下... 编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
1+1/2+ .... +1/n!

输出保留5位小数

下面是我写的答案,求大神帮我改改。。
#include<stdio.h>
int main()
{
double sum=0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=1/n+sum;
}
printf("sum=%.5lf\n",sum);

return 0;
}
展开
 我来答
cpucash
推荐于2017-06-16 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:962万
展开全部
sum=1/n+sum;
中心算法就是这一句
应该是
sun+=1.0/fact(i);

fact是系统函数,这不应自己编写,调用即可,应该在math.h头文件中吧
不过这样效率要低下不少,因为每次都需要计算n的阶乘
好的算法是

int i,n,s=1;
float sum=0;

for(i=1;i<=n;i++)
{
s*=i; //计算i的阶乘
sum+=1.0/s;

}
Exclaim_WZ
2017-06-16
知道答主
回答量:11
采纳率:0%
帮助的人:4.1万
展开全部

可以这样修改

#include<stdio.h>

double fact(int k)
{
  double res = 1.0;
  int i;
  for(i=2; i<=k; i++)
    res *= i;
  return res;
}

int main()
{
  double sum=0;
  int i,n;
  scanf("%d",&n);
  for(i=1;i<=n;i++){
    sum += 1.0/fact(i);
  }
  printf("sum=%.5lf\n",sum);
  return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6b264c8
2012-12-14 · TA获得超过288个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:207万
展开全部
#include<stdio.h>
double fact(int k)
{
double res = 1.0;
while (k>=1)
{
res *= k;
k--;
}
return res;
}
int main()
{
double sum=0.0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=1.0/fact(i);
}
printf("sum=%.5lf\n",sum);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WZM_lol
2012-12-14
知道答主
回答量:1
采纳率:0%
帮助的人:1545
展开全部
#include<stdio.h>
int fact(int k)
{
int s = 1, i;
for (i = 1; i <= k; i )
s *= i;
return s;
}

void main()
{
int i, n;
double sum = 0, q, w;
scanf("%d", &n);
for (i = 1; i <= n; i )
{
q = fact(i);
sum = 1.0/ q;
}
printf("%.5f\n", sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icso
2012-12-14 · TA获得超过650个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:427万
展开全部
呃,刚看错题了,mmdeniubi的答案貌似可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式