编程求解:1⼀1! + 1⼀2! +1⼀3! +……1⼀n! ,其中n为用户从键盘上输入的一个正整数。 求解我这怎么错了

2024-11-27 00:41:36
推荐回答(2个)
回答1:

错在s=s+1/f;这一句,其中1/f,参与运算的两个数都是整数,这样得到的结果仍然是整数,也就是两个整数相除得到商的整数部分。
把表达式改为s=s+1.0/f;即可。
另外,f=f*i;最好写成f*=i;
s=s+1.0/f;最好写成s+=1.0/f;
这样更符合C程序员的习惯。

回答2:

#include
int main()
{
int n,i=1,f=1;
float s=0;
scanf("%d",&n);
while(i<=n)
{
f=f*i;
s=s+1.0/f; //重点看这里,1/2会等于0,而1.0/2=0.5
i++;
}
printf("%f\n",s);
return 0;
}