说明进入死循环了。进入死循环的原因是c的值溢出,b没办法收敛到小于0.00001的值。因为c为i的阶乘,而c的类型为int,能存储的最大值约为21亿,i取13时c就溢出了,c溢出了b的值没法计算,就一直死循环了。
你可以把c的类型改为long long或_int64
#include<stdio.h>
#include<math.h>
int main(void){
int i=1;
_int64 c=1;
double x=0,b=1,a=1,e=1;
scanf("%lf",&x);
while(fabs(b)>0.00001){
c*=i;
e*=x;
b=e/c;
a+=b;
i++;
}
printf("%.4f",a);
return 0;
}