#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
}
问题出在这里,s = s + 1/i;
float类型与int类型做运算时,float类型会被当做int类型。
而且 1/i本身也是两个整形的运算,结袜亮顷果是一个整形,比如1 /2 的结键搜果是0.而不是0.5
可以将其告陆修改为:s = s + 1.0 / (float) i;
1234567891011121314151617181920212223#include
函数b应该返回sum而不是i