1 #include <iostream> 2 #include <math.h> 3 using namespace std; 4 int init() 5 { 6 int i; 7 printf("请输入一个非负整数 "); 8 scanf("%d",&i); 9 return i; 10 } 11 void input(int i ,int j) 12 { 13 printf("%d! = %d ",i,j); 14 } 15 int fac(int i) 16 { 17 int product = 1; 18 if(0 == i) 19 { 20 return product; 21 } 22 else 23 { 24 while(i) 25 { 26 product *= i--; 27 } 28 return product; 29 } 30 } 31 void accur() 32 { 33 int n;float sum = 1.0; 34 printf("请输入您想求前几项的和 "); 35 scanf("%d",&n); 36 if(n <= 0) 37 printf("输入错误!! "); 38 else 39 { 40 while(n) 41 { 42 sum +=1.0*(n-1)/fac(n-1); 43 n--; 44 } 45 printf("sum = %.2f ",sum); 46 } 47 } 48 void accurpow() 49 { 50 int x,n; 51 printf("请输入 x和n的值 "); 52 scanf("%d%d",&x,&n); 53 float sum = 0.0; 54 55 while(n) 56 { 57 sum += 1.0*pow(x,n-1)/fac(n-1); 58 n--; 59 } 60 printf("sum = %.2f ",sum); 61 62 } 63 int main(void) 64 { 65 66 int i,j; 67 i = init(); 68 //1.读入一个非负整数,然后打印他的阶乘 69 j = fac(i); 70 input(i,j); 71 //2.使用公式:e = 1+1/1!+2/2!+3/3!+.........估算出数学常量e的值,要求能够提示用户确定想要的精度(即:累加求和的项数) 72 accur(); 73 //3.使用公式:e^x = 1+x/1!+x^2/2!+x^3/3!+......估算出e^x的值,要求能够提示用户确定想要的精度(即:累加求和的项数) 74 accurpow(); 75 76 return 0; 77 }