我怀疑这道题的样例有问题,也可能是我的编译器上设定的精度不够高。
#include
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 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 ,我还把每一个项都输出验证了一下,发现并没有问题。