这个咋错了<<i>>

img

img


#include
#include
int fac(int n)
{
int i;
int result=1;
for(i=1;i<=n;i++){
result*=i;
}
return result;
}
int main()
{
double x;
scanf("%lf",&x);
int n=1;
double result=0;
int flag=1;
while(flag){
result+=pow(x,n)/fac(n);
if(pow(x,n)/fac(n)<0.00001)
flag=0;
n++;
}
printf("%.4f",result+1);
return 0;
}

int类型溢出了

#include <stdio.h>
#include <math.h>
double fac(int n,double x)
{
    int i;
    double result=1;
    for(i=1;i<=n;i++){
        result*=(x / i);
    }
    //printf("%lf\n",result);
    return result;
}
int main()
{
    double x;
    scanf("%lf",&x);
    int n=1;
    double result=0,mid;
    int flag=1;
    while(flag){
        mid = fac(n,x);
        result+=mid;
        if(mid<0.00001)
            flag=0;
        n++;
    }
    printf("%.4lf",result+1);
    return 0;
}

int装不下太大的阶乘
https://apull.blog.csdn.net/article/details/127473080