错在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程序员的习惯。
#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;
}