
为什么我输入5.0没有运行结果呢,但是输入1.0就有运行结果,可以解答一下吗

这个是原题目
参考答案运行的:

将变量n定义为double类型,然后分子那里单独定义一个double型变量即可。
修改如下:
#include <stdio.h>
#include <math.h>
int main(void){
int sign=-1, i=1;
// 因为每一项的分子是每次累乘x的值,所以这里单独使用一个double变量来存储分子的值
// 然后每一项的分母的阶乘结果可能会超出int的取值范围,这里同样将变量n定义为double类型
double s=1.0, t=1.0, x, nrt, n=1.0;
scanf("%lf",&x);
nrt=x; // 分子这里初始赋值为x
while(fabs(t)>=1e-6){
t=sign*(nrt/n);
s+=t;
// printf("n=%f, nrt=%f, i=%d, sign=%d, t=%f, s=%f\n", n, nrt, i, sign, t, s);
// if(i%10==0){
// getchar();
// }
sign*=-1;
nrt*=x; // 当前项的分子nrt累乘x的值
i++;
n=n*i;
}
printf("%f", s);
return 0;
}
