注册 登录
编程论坛 C语言论坛

求幂级数展开的部分和

黑暗骑士5D 发布于 2019-12-06 12:52, 3299 次点击
只有本站会员才能查看附件,请 登录

现给定一个实数x,要求利用此幂级数部分和求e^x
​​ 的近似值,求和一直继续到最后一项的绝对值小于0.00001。

输入格式:
输入在一行中给出一个实数x∈[0,5]。

输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:
1.2
输出样例:
3.3201

看看我这个程序
#include <stdio.h>
#include <math.h>
int main()
{
    int m=1,j,i;
    double x,a,z=1,n,b=1;
    scanf("%lf",&x);
    for(i=1;n>=0.00001;i++)
    {
       a=pow(x,i);
    for(j=1;j<=i;j++)
    {
       b*=m;
       m++;
    }
       n=a*1.0/b;
       printf("%lf",n);
       z+=n;
    }
    printf("%.4lf",z);
    return 0;
}
4 回复
#2
rjsp2019-12-06 14:25
似乎跟你上个帖子一样,变量不初始化就使用

程序代码:
#include <stdio.h>

int main( void )
{
    double x;
    scanf( "%lf", &x );

    double ex = 1;
    double t = 1;
    for( unsigned k=1; t>=0.00001; ++k )
    {
        t *= x/k;
        ex += t;
    }

    printf( "%.4f\n", ex );
}

#3
黑暗骑士5D2019-12-06 16:38
回复 2楼 rjsp
哪个没初始化呀
#4
rjsp2019-12-06 16:47
回复 3楼 黑暗骑士5D
n呀
#5
纯蓝之刃2019-12-06 20:37
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int m=1,j,i;
    double x,a,z=1,n=1,b=1;
    scanf("%lf",&x);
    for(i=1;n>=0.00001;i++)
    {
        a=pow(x,i);
        for(j=1,m=1,b=1;j<=i;j++)
        {
           b*=m;
           m++;
        }
        //printf("a=%lf,b=%lf",a,b);
        n=a*1.0/b;
        //printf("n=%lf\n",n);
        z+=n;
    }
    printf("%.4lf",z);
    return 0;
}

你这个,每次循环的时候b,m都没有初始化。还有楼上说的刚开始n也没有初始化
1