C语言 求s=1+1⼀2!+1⼀3!+....+1⼀n! n为输入值 #include<stdi

2024-10-31 23:21:42
推荐回答(4个)
回答(1):

#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
}

回答(2):

问题出在这里,s = s + 1/i;
float类型与int类型做运算时,float类型会被当做int类型。
而且 1/i本身也是两个整形的运算,结袜亮顷果是一个整形,比如1 /2 的结键搜果是0.而不是0.5
可以将其告陆修改为:s = s + 1.0 / (float) i;

回答(3):

1234567891011121314151617181920212223#includemain(){ 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}

回答(4):

函数b应该返回sum而不是i