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| 7:等额还款 |\n");
28 printf("\t\t| 0:结束 |\n");
29 printf("\t\t|-----------------------------------|\n");
30 printf("请输入你要选择的功能(0~7):");
31
32 }
33 void benjin()//计算本金
34 {
35 int N,m;
36 double i,F,P;
37 printf("复利终值:");
38 scanf("%lf",&F);
39 printf("年利率:");
40 scanf("%lf",&i);
41 printf("存入年限:");
42 scanf("%d",&N);
43 printf("年复利次数:");
44 scanf("%d",&m);
45 P=F/pow((1+i/m),N*m);
46 printf("年复利终值为%.4lf需要本金为:%.4lf\n",F,P);
47 }
48 void fuli()//计算复利终值
49 {
50 int N,m;
51 double i,F,P;
52 printf("存入本金:");
53 scanf("%lf",&P);
54 printf("年利率:");
55 scanf("%lf",&i);
56 printf("存入年限:");
57 scanf("%d",&N);
58 printf("年复利次数:");
59 scanf("%d",&m);
60 F=P*pow((1+i/m),N*m);
61 printf("复利终值:%.4lf\n",F);
62 }
63 void danli()//单利计算
64 {
65 int N;
66 double i,H,P,L;
67 printf("存入本金:");
68 scanf("%lf",&P);
69 printf("年利率:");
70 scanf("%lf",&i);
71 printf("存入年限:");
72 scanf("%d",&N);
73 L=P*N*i;
74 H=L+P;
75 printf("本息和为:%.4lf\n",H);
76 }
77 void years()//求年份
78 {
79 int N,m;
80 double i,F,P;
81 printf("复利终值:");
82 scanf("%lf",&F);
83 printf("存入本金:");
84 scanf("%lf",&P);
85 printf("年利率:");
86 scanf("%lf",&i);
87 printf("年复利次数:");
88 scanf("%d",&m);
89 N=(int)(log(F/P)/log(1+i/m)/m);
90 printf("从%.4lf到%.4lf需要%d年\n",P,F,N);
91 }
92 void annual_int_rate()//计算年利率
93 {
94 int N,m;
95 double i,F,P;
96 printf("复利终值:");
97 scanf("%lf",&F);
98 printf("存入本金:");
99 scanf("%lf",&P);
100 printf("存入年限:");
101 scanf("%d",&N);
102 printf("年复利次数:");
103 scanf("%d",&m);
104 i=m*(pow(F/P,1.0/(N*m))-1);
105 printf("从%.4lf到%.4lf需要%.4lf\n",P,F,i);
106 }
107 void YM_Equal_cast_final()//计算年金终值
108 {
109 int N,n;
110 double i,F,P;
111 printf("存入本金:");
112 scanf("%lf",&P);
113 printf("存入年限:");
114 scanf("%d",&N);
115 printf("年利率:");
116 scanf("%lf",&i);
117 printf("\t\t1:按年投资\n\t\t2:按月投资\n");
118 A:printf("请选择你要的功能<1|2>:");
119 scanf("%d",&n);
120 if(n==1)
121 {
122 F=P*(pow(1+i,N)-1)/i;
123
124 }
125 else if(n==2)
126 {
127 F=P*12*(1+i)*(pow(1+i,N)-1)/i;
128 }
129 else
130 {
131 printf("输入有误!请重新输入\n");
132 goto A;
133 }
134 printf("%d年后的总产值:%.4lf\n",N,F);
135
136 }
137 void Average_capital_plus_interest()
138 {
139 int N;
140 double i,F,P;
141 printf("贷款金额:");
142 scanf("%lf",&F);
143 printf("存入年限:");
144 scanf("%d",&N);
145 printf("年利率:");
146 scanf("%lf",&i);
147 P=F*i/(12*(1+i)*(pow(1+i,N)-1));
148 printf("贷款%.4lf每月需要还款%.4lf\n",F,P);
149 }
150 void main()
151 {
152 int n;
153 while(1)
154 {
155 tip();
156 menu();
157 B:scanf("%d",&n);
158 if(n>=0&&n<=7)
159 {
160 if(n==0)
161 break;
162 switch(n)
163 {
164 case 1:
165 benjin();break;
166 case 2:
167 fuli();break;
168 case 3:
169 danli();break;
170 case 4:
171 years();break;
172 case 5:
173 annual_int_rate();break;
174 case 6:
175 YM_Equal_cast_final();break;
176 case 7:
177 Average_capital_plus_interest();break;
178 case 0:n=0;break;
179
180 }
181 }
182 else
183 {
184 printf("输入超出范围,请重新输入:");
185 goto B;
186 }
187 getch();
188 }
189 }