作业帮 > 综合 > 作业

C语言编一个计算e的值的程序

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/26 07:35:29
C语言编一个计算e的值的程序
要求为最后一项的值时为止,小于0.0000001,我编的程序是这样的,但是不对,求分析与修改.
#include
#include
#define EPSILON 1e-6
int main()
{
double s,e,n,z,m,t,i;
t=0.000000;
m=1.000000;
s=1.000000;
z=1.000000;
for(i=1.000000;n>=EPSILON;++i)
{
z=z*i;
n=m/z;
t=t+n;
}
e=t+1.000000;
printf("e=%.6lf",e);
return 0;
}
再问一个问题,就是最后输出时用%f与%lf的区别,都是对应double型的.
// double ?
for(i=1.000000;n>=EPSILON;++i)
    {
        z=z*i; // 阶乘
        n=m/z; // 求反
        t=t+n; // 求和
    }
你是想表达这个意思吧double s,e,n,z,m,t,i; // 1. 不需要全部使用double的
// double是处理小数位数多的时候进行使用的
// double和float都是一个相似值
    t=0.000000;
    m=1.000000;
    s=1.000000;
    z=1.000000;
    for(i=1.000000;n>=EPSILON;++i) // n的初始化呢? n什么时候才能够 >= EPSILON
    // 所以你这里应该使用do while的结构,而不是 for
    {
        z=z*i; // 这里的问题,就是我前面标示的,
               //long long会更精确一点,而1.0000001 * 1.0000002的结果会对下面有影响的
        n=m/z; // m 始终没有改变过,没有必要使用一个变量:)
               // n = double(1) / z;
        t=t+n; // t += n; 个人习惯
    }
    e=t+1.000000;
    printf("e=%.6lf",e);
    return 0;