e的近似值但运行值是零

e=1+1/1! + 1/2! + ..... +1/n!
要求使用while结构 计算到最后一项的绝对值小于10的-7为止
但我的程序跑出来结果为零

#include 


int main(void) {
    int i = 0;
    double e = 1, x = 1, n = 1.0e7;
    while (i <= n) {
        x *= i;
        e = e + 1.0 / x;
        i++;

    }
    printf("%d", e);
}

这样?

#include <stdio.h>
int main() {
    int i = 1;
    double e = 1, x = 1, n = 1.0e-7;
    while( 1.0/x >= n )
    {
        x *= i;
        e = e + 1.0 / x;
        i++;
    }
    printf("%f",e);
}

e是double型,最后输出要用%lf,不能用%d。%d用于输出整数
而且代码也不对,首先循环条件怎么可能是i<1.0e7呢?其次题目要求最后一项小于10的-7次方,但你的代码是遇到小于10的-7次方就结束了。因此改用do...while更合理

#include <stdio.h>
 
 
int main(void) {
    int i = 1;
    double e = 1, x = 1, n = 1.0e-7;
    do
    {
        x *= i;
        e = e + 1.0 / x;
        i++;
    }while(1.0/x >= n);
    printf("%lf", e);
}