分别用while语句、do-while语句编写程序,计算e≈1+1/1!+1/2!+...+1/n!。

分别用while语句、do-while语句编写程序,计算e≈1+1/1!+1/2!+...+1/n!。实验步骤与要求如下:(1)用单重循环编写程序;(2)使误差(指累加的相邻两项之差)小于给定的ε,设ε=10-5 (3)除了输出e以外,同时还要输出总的累加项数n 这到题怎么做?主要是怎么用一个循环作出来啊?

#include<stdio.h> #include<math.h> #define ESP 10e-5 /*方差*/ int Factorial(int n) /*求n的阶乘*/ { if(n <= 1) return 1; else return n*(Factorial(n-1)); } void main(void) { int i = 0, n = 0; long double sum = 1, fac = 0, pre_fac = 0; /*while(){}执行部分*/ n++; fac = 1/Factorial(n); while(fabs(pre_fac - fac) > ESP) { sum = sum + fac; pre_fac = fac; n++; fac = 1.0/Factorial(n); } printf("\nn = %d sum = %f\n", n, sum); /*do{}while()执行部分*/ sum = 1; n = 0; fac = 0; pre_fac = 0; do { sum = sum + fac; pre_fac = fac; n++; fac = 1.0/Factorial(n); }while(fabs(pre_fac - fac) > ESP); printf("\nn = %d sum = %f\n", n, sum); } 执行结果:
温馨提示:答案为网友推荐,仅供参考
相似回答