c语言的:输入1个实数x,计算并输出下式的值,直到最后一项小于10-5

如题所述

我怀疑这道题的样例有问题,也可能是我的编译器上设定的精度不够高。

#include <stdio.h>

long long fact(int n)
{
    int i;
    long long res=1;
    for(i=2;i<=n;i++)
        res *= i;
    return res;
}

double mypow(double x,int a)
{
    int i;
    double res=1.0;
    for(i=0;i<a;i++)
        res *= x;
    return res;
}

int main()
{
    int i;
    double x,t=1,s=0;    //t为每一项的值,设置初始值为1是为了第一次能进入循环
    scanf("%lf",&x);
    for(i=0;t >= 0.00001;i+=2)
    {
        t = mypow(x,i) / fact(i);
        s += t;
    }
    printf("%lf\n",s);

    return 0;
}

我的结果是3.762195 ,我还把每一个项都输出验证了一下,发现并没有问题。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答