一道C语言的编程题 ~~求高手解答

【问题描述】计算下列级数和的近似值,x的值从键盘输入,求和精度为10-6,输出达到精度要求的最小n与级数和,两者间用逗号分隔。s(x)=x-x3/3!+x5/5!-x7/... 【问题描述】
计算下列级数和的近似值,x的值从键盘输入,求和精度为10-6,输出达到精度要求的最小n与级数和,两者间用逗号分隔。
s(x)=x-x3/3!+x5/5!-x7/7!+……+(-1)n-1·x2n-1/(2n-1)!
【输入形式】
从键盘输入x的值(实数)。
【输出形式】
输出级数和精度达到10-6的最小n和级数和,两者间用逗号分隔。

【样例输入1】 0.523599
【样例输出1】 4,0.500000
【样例输入2】 -1
【样例输出2】 5,-0.841471
【样例输入3】 6.283185
【样例输出3】 13,0.000000
【评分标准】共4个测试点。
精度怎么确定啊,最好有详细过程解答!!!
展开
 我来答
匿名用户

2013-04-21
展开全部


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

}

qimei_zhh
2013-04-21 · TA获得超过141个赞
知道答主
回答量:149
采纳率:0%
帮助的人:82.6万
展开全部
就是F%前面加上你要精确到的位数就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式