#include
#include
int main(void)
{
double f = 1;
double x, k, x2, power = 1;
int i = 2;
scanf("%lf", &x);
power += x;
k = x;
do {
x2 = power;
f *= i++;
x *= k;
power += x / f;
} while(fabs(power-x2) > 1e-8);
printf("%f", power);
}
/////////////////////////
你那个代码,1、pow函数可以不用自己写,你写的精度也不够;2、保存阶乘最好用double,不然要溢出。
修正了以上2点就没问题了,代码如下:
#include
#include
double f1(int n)
{
double s = 1;
int i;
for ( i=1; i<=n; i++)
s *= i;
return s;
}
main()
{
int x,i, n;
double ex = 1;
scanf("%d%d",&x,&n);
for ( i=1; i<=n; i++)
ex += pow(x, i) / f1(i);
printf("%lf %lf\n",ex, exp(x));
}