阶乘循环联系题

 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 }
原文地址:https://www.cnblogs.com/wangchaomahan/p/9894888.html