1 #include<stdio.h>
2 #include<math.h>
3 #include<conio.h>
4 void tip()//计算公式和一些变量的介绍
5 {
6 printf("复利计算软件\n");
7 printf(" 复利计算公式:F=P*pow((1+i/m),N*m)\n");
8 printf(" 单利计算公式:L=P*N*i;H=L+P\n");
9 printf("\tF:复利终值|年金终值\n");
10 printf("\tP:本金\n");
11 printf("\ti:利率\n");
12 printf("\tH:本利和\n");
13 printf("\tN:利率获取时间的整数倍\n");
14 printf("\tm:年复利次数(一年当中的滚利次数)\n");
15 }
16 void menu()//菜单
17 {
18 printf("\t\t|-----------------------------------|\n");
19 printf("\t\t| welcome |\n");
20 printf("\t\t|-----------------------------------|\n");
21 printf("\t\t| 1:计算本金 |\n");
22 printf("\t\t| 2:计算年复利终值 |\n");
23 printf("\t\t| 3:单利计算 |\n");
24 printf("\t\t| 4:计算年份 |\n");
25 printf("\t\t| 5:计算年利率 |\n");
26 printf("\t\t| 6:年金终值(年|月) |\n");
27 printf("\t\t| 0:结束 |\n");
28 printf("\t\t|-----------------------------------|\n");
29 printf("请输入你要选择的功能(0~6):\n");
30
31 }
32 void benjin()//计算本金
33 {
34 int N,m;
35 double i,F,P;
36 printf("复利终值:");
37 scanf("%lf",&F);
38 printf("年利率:");
39 scanf("%lf",&i);
40 printf("存入年限:");
41 scanf("%d",&N);
42 printf("年复利次数:");
43 scanf("%d",&m);
44 P=F/pow((1+i/m),N*m);
45 printf("年复利终值为%.4lf需要本金为:%.4lf\n",F,P);
46 }
47 void fuli()//计算复利终值
48 {
49 int N,m;
50 double i,F,P;
51 printf("存入本金:");
52 scanf("%lf",&P);
53 printf("年利率:");
54 scanf("%lf",&i);
55 printf("存入年限:");
56 scanf("%d",&N);
57 printf("年复利次数:");
58 scanf("%d",&m);
59 F=P*pow((1+i/m),N*m);
60 printf("复利终值:%.4lf\n",F);
61 }
62 void danli()//单利计算
63 {
64 int N;
65 double i,H,P,L;
66 printf("存入本金:");
67 scanf("%lf",&P);
68 printf("年利率:");
69 scanf("%lf",&i);
70 printf("存入年限:");
71 scanf("%d",&N);
72 L=P*N*i;
73 H=L+P;
74 printf("本息和为:%.4lf\n",H);
75 }
76 void years()//求年份
77 {
78 int N,m;
79 double i,F,P;
80 printf("复利终值:");
81 scanf("%lf",&F);
82 printf("存入本金:");
83 scanf("%lf",&P);
84 printf("年利率:");
85 scanf("%lf",&i);
86 printf("年复利次数:");
87 scanf("%d",&m);
88 N=(int)(log(F/P)/log(1+i/m)/m);
89 printf("从%.4lf到%.4lf需要%d年\n",P,F,N);
90 }
91 void annual_int_rate()//计算年利率
92 {
93 int N,m;
94 double i,F,P;
95 printf("复利终值:");
96 scanf("%lf",&F);
97 printf("存入本金:");
98 scanf("%lf",&P);
99 printf("存入年限:");
100 scanf("%d",&N);
101 printf("年复利次数:");
102 scanf("%d",&m);
103 i=m*(pow(F/P,1.0/(N*m))-1);
104 printf("从%.4lf到%.4lf需要%.4lf\n",P,F,i);
105 }
106 void YM_final_value_annuity()//计算年金终值
107 {
108 int N,n;
109 double i,F,P;
110 printf("存入本金:");
111 scanf("%lf",&P);
112 printf("存入年限:");
113 scanf("%d",&N);
114 printf("年利率:");
115 scanf("%lf",&i);
116 printf("\t\t1:按年投资\n\t\t2:按月投资\n");
117 A:printf("请选择你要的功能<1|2>:");
118 scanf("%d",&n);
119 if(n==1)
120 {
121 F=P*(pow(1+i,N)-1)/i;
122
123 }
124 else if(n==2)
125 {
126 F=N*12*(P*(i/12)+P);
127 }
128 else
129 {
130 printf("输入有误!请重新输入\n");
131 goto A;
132 }
133 printf("%d年后的总产值:%.4lf\n",N,F);
134
135 }
136 void main()
137 {
138 int n;
139 while(1)
140 {
141 tip();
142 menu();
143 scanf("%d",&n);
144 if(n==0)
145 break;
146 switch(n)
147 {
148 case 1:
149 benjin();break;
150 case 2:
151 fuli();break;
152 case 3:
153 danli();break;
154 case 4:
155 years();break;
156 case 5:
157 annual_int_rate();break;
158 case 6:
159 YM_final_value_annuity();break;
160 case 0:n=0;break;
161
162 }
163 getch();
164 }
165 }