C语言 求s=1+1/2!+1/3!+....+1/n! n为输入值 #include<stdi
答案:3 悬赏:70 手机版
解决时间 2021-02-14 22:27
- 提问者网友:夢醒日落
- 2021-02-13 23:43
C语言 求s=1+1/2!+1/3!+....+1/n! n为输入值 #include<stdi
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-02-14 01:12
#include
main()
{
int b(int);
float s;//只有s需要用浮点型
int a,i,j,
s=0;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
j=b(i);//这里改成j
s=s+1.0/(float)j;//这里用1.0
}
printf("%f",s);
}
int b(int i)
{
int c,sum;
sum=1;
for(c=1;c<=i;c++)
sum=sum*c;
return sum;//这里返回sum
}追问我试了一下,这样写还是得不正确结果,只会输出0.000000或-0.000000你再看一下,我能力有限,实在想不出哪里出了问题追答int a,i,j;//这里最后面的逗号改成分号
追问额.....我没注意....问题已经完美解决,我也学到不少,谢谢大神了
main()
{
int b(int);
float s;//只有s需要用浮点型
int a,i,j,
s=0;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
j=b(i);//这里改成j
s=s+1.0/(float)j;//这里用1.0
}
printf("%f",s);
}
int b(int i)
{
int c,sum;
sum=1;
for(c=1;c<=i;c++)
sum=sum*c;
return sum;//这里返回sum
}追问我试了一下,这样写还是得不正确结果,只会输出0.000000或-0.000000你再看一下,我能力有限,实在想不出哪里出了问题追答int a,i,j;//这里最后面的逗号改成分号
追问额.....我没注意....问题已经完美解决,我也学到不少,谢谢大神了
全部回答
- 1楼网友:煞尾
- 2021-02-14 04:00
函数b应该返回sum而不是i
- 2楼网友:雪起风沙痕
- 2021-02-14 02:28
问题出在这里,s = s + 1/i;
float类型与int类型做运算时,float类型会被当做int类型。
而且 1/i本身也是两个整形的运算,结果是一个整形,比如1 /2 的结果是0.而不是0.5
可以将其修改为:s = s + 1.0 / (float) i;
float类型与int类型做运算时,float类型会被当做int类型。
而且 1/i本身也是两个整形的运算,结果是一个整形,比如1 /2 的结果是0.而不是0.5
可以将其修改为:s = s + 1.0 / (float) i;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯