C语言 编写程序求e的值 e=1+1/1!+1/2!+1/3!+......

用for循环求前50项,求不出来值,请帮忙看一下哪一个地方错了。

#include <stdio.h>

int main() {

long int i, k;

double n=1.0l;/*n!

double s = 1.0l;

for (i = 1; i < 50; i++) {

n=n*i;  

s += 1.0 / n;

}

printf("e = %lf\n", s);

getchar();

return 0;

}

或:

public class Test{

public static void main(String args[]){

double sum=1,n=1;

double e=1;

for(n=1;n<=10;n++){

sum=sum*n;

e+=1/sum;}

System.out.println("e="+e);

}

}

得到的值为:2.7182818011463845...

随着n值越专大得到的e值越精属确。

扩展资料:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

参考资料来源:百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05
#include <stdio.h>
 
int main() {
        long int i, k;
        double n=1.0l;/*n!很大,用long型有的机器不行*/
        double s = 1.0l;
        for (i = 1; i < 50; i++) {
                n=n*i;  
                s += 1.0 / n;
        }
        printf("e = %lf\n", s);
        getchar();
        return 0;
}

本回答被提问者和网友采纳
第2个回答  2014-08-14

在第二个for循环上面加上n = 1;

#include <stdio.h>

int main() {
        long int i, k, n;
        double s = 1;
        for (i = 1; i < 50; i++) {
                n = 1;
                for (k = 1; k <= i; k++) {
                        n *= k;
                }
                s += 1.0 / n;
        }
        printf("e = %lf\n", s);
        return 0;
}

第3个回答  2014-08-14
你应该在 for(i=1;i<50;i++)
{n=n*i;
s=s+1.0/n;
}
这样就可以了。 因为n 没有重新赋值,它的值一直就在不断累积,求阶乘不需要重新用一个FOR 循环。
第4个回答  2018-04-09
int改成float
相似回答