运行结果是0?错哪了?!

img

这个程序的循环体压根没用到。。。你这个程序究竟是干嘛的你明确了吗?
因为t=0,所以t永远不可能大于等于1e-6,所以循环体也就不会执行,最后返回的是e的浮点数,因为e的类型是double

题目是什么?正确答案应该是什么?

%f换成%d

供参考对照:

#include<stdio.h>
int main()
{
    double s, k, e, t;
    e = 0;
    t = 1;
    s = 1;
    k = 1;
    while (t >= 1e-6) {
        s *= k;
        e += 1.0 / s;
        t =  1.0 / s;
        k++;
    }
    printf("e = %f\n", e);
    return 0;
}