1 #include <iostream>
2 #include <math.h>
3 using namespace std;
4 int init()
5 {
6 int i;
7 printf("请输入一个非负整数\n");
8 scanf("%d",&i);
9 return i;
10 }
11 void input(int i ,int j)
12 {
13 printf("%d! = %d\n",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("请输入您想求前几项的和\n");
35 scanf("%d",&n);
36 if(n <= 0)
37 printf("输入错误!!\n");
38 else
39 {
40 while(n)
41 {
42 sum +=1.0*(n-1)/fac(n-1);
43 n--;
44 }
45 printf("sum = %.2f\n",sum);
46 }
47 }
48 void accurpow()
49 {
50 int x,n;
51 printf("请输入 x和n的值\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\n",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 }