关于这个级数求和怎么编

img


#include <stdio.h>
#include <math.h>
const double eps = 1e-6;
double fact(int i)//求参数i的阶乘阶乘的函数

{
    double n=1;
    while(i>1)
    {
        n *= i;
        i--;
    }
    return n;
}
int main(void)
{
    double sum=0, S, Sn;
    int i, j, m;
    for (j=0; j<4; j++,sum=0)//4个测试点
    {
        scanf("%lf", &S);
        for (i=1; ;i++)
        {
            if (i%2 == 0)
                Sn = -1 * pow(S, 2*i-1) / fact(2*i-1);//pow函数是求S的2*i-1次方
            else
                Sn = pow(S, 2*i-1) / fact(2*i-1);
            if (fabs(Sn) < eps)//如果该项的绝对值小于精度,那么就要退出循环了,
            {
                m = i-1;//m要记录的是最后一个大于精度的数的项数,所以是i-1
                break;//退出当前的循环
            }
            else
                sum += Sn;
        }
        printf("%d,%.6lf\n", m, sum);
    }
    return 0;
}

img