6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?
(定额定投收益计算办法)
8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)
1 #include<stdio.h>
2 #include<math.h>
3 int year,n;
4 double p,q,F=0.0;
5 void innit()
6 {
7 printf("注释:p为现金\n");
8 printf(" year为年限\n");
9 printf(" n为年复利次数\n");
10 printf(" q为年利率\n");
11 printf(" F为年复利终值\n");
12 }
13 void menu()
14 {
15 printf("\t|------------------------------------|\n");
16 printf("\t| welcome |\n");
17 printf("\t|------------------------------------|\n");
18 printf("\t| 1、复利计算 |\n");
19 printf("\t| 2、单利计算 |\n");
20 printf("\t| 3、每月等额本息还款 |\n");
21 printf("\t| 0、退出系统 |\n");
22 printf("\t|------------------------------------|\n");
23 }
24 //复利计算
25 void compoundinterest(){
26 int I,a;
27 int ch;
28 B:printf("\t1、获取复利终值\n");
29 printf("\t2、根据复利终值获取本金\n");
30 printf("\t3、估算获得年终值的年限\n");
31 printf("\t4、估算获得年终值的报酬率\n");
32 printf("\t5、投资获利\n");
33 printf("请选择功能<1~5>:");
34 scanf("%d",&I);
35 if(I==1)
36 {
37 printf("请输入存款金额:");
38 scanf("%lf",&p);
39 printf("请输入存入存蓄年限:");
40 scanf("%d",&year);
41 printf("请输入年复利次数:");
42 scanf("%d",&n);
43 printf("请输入年利率:");
44 scanf("%lf",&q);
45 F=p*pow((1+q/n),year*n);
46 printf("复利终值为%lf:",F);
47 }
48 if(I==2)
49 {
50 printf("请输入复利终值:");
51 scanf("%lf",&F);
52 printf("请输入存入存蓄年限:");
53 scanf("%d",&year);
54 printf("请输入年复利次数:");
55 scanf("%d",&n);
56 printf("请输入年利率:");
57 scanf("%lf",&q);
58 p=F/(pow((1+q/n),year*n));
59 printf("复利本金为%lf:",p);
60 }
61 if(I==3)
62 {
63 printf("请输入存款金额:");
64 scanf("%lf",&p);
65 printf("请输入年利率:");
66 scanf("%lf",&q);
67 printf("请输入年复利次数:");
68 scanf("%d",&n);
69 printf("请输入年终值:");
70 scanf("%lf",&F);
71
72 year=(int)(log(F/p)/log(1+q/n))/n;
73 // F=p*(1+q*year);
74 printf("年限为%d\n:",year);
75
76
77 }
78 if(I==4)
79 {
80 printf("请输入存款金额:");
81 scanf("%lf",&p);
82 printf("请输入存入存蓄年限:");
83 scanf("%d",&year);
84 printf("请输入年复利次数:");
85 scanf("%d",&n);
86 printf("请输入年终值:");
87 scanf("%lf",&F);
88 //F=p*pow((1+q/n),year*n);
89 q=n*(pow(F/p,1.0/(year*n))-1);
90 printf("复利的年利率为%lf:\n",year,q);
91
92 }
93 if(I==5)
94 {
95 printf("1.按月投 2.按年投\n");
96 printf("请选择定投方式:");
97 scanf("%d",&a);
98 if(a==1){
99 printf("请输入月投金额:");
100 scanf("%lf",&p);
101 printf("请输入存入定投年限:");
102 scanf("%d",&year);
103 printf("请输入收益率:");
104 scanf("%lf",&q);
105 F=p*12*(1+q)*(-1+pow(1+q,year))/q;
106 printf("%d年后的资产终值为:%lf",year,F);}
107 if(a==2){
108 printf("请输入年投金额:");
109 scanf("%lf",&p);
110 printf("请输入存入定投年限:");
111 scanf("%d",&year);
112 printf("请输入收益率:");
113 scanf("%lf",&q);
114 F=p*(1+q)*(-1+pow(1+q,year))/q;
115 printf("%d年后的资产终值为:%lf",year,F);}
116
117 }
118
119 printf("\n\t是否要重新计算?(1/0)\n");
120 scanf("%d",&ch);
121 if(ch==1)
122 {
123 goto B;
124 }
125 }
126
127 //单利计算
128 void simpleinterest()
129 {
130 int n;
131 int ch;
132 A:printf("\t1、获取单利终值\n");
133 printf("\t2、根据单利终值获取本金\n");
134 printf("\t3、估算获得年终值的年限\n");
135 printf("\t4、估算获得年终值的报酬率\n");
136 printf("请选择功能<1~4>:");
137 scanf("%d",&n);
138 if(n==1)
139 {
140
141 printf("请输入存款金额:");
142 scanf("%lf",&p);
143 printf("请输入存入存蓄年限:");
144 scanf("%d",&year);
145 printf("请输入年利率:");
146 scanf("%lf",&q);
147
148 F=p*(1+q*year);
149 printf("单利终值为%lf\n:",F);}
150 if(n==2)
151 {
152 printf("请输入单复利终值:");
153 scanf("%lf",&F);
154 printf("请输入存入存蓄年限:");
155 scanf("%d",&year);
156 printf("请输入年利率:");
157 scanf("%lf",&q);
158
159 p=F/(1+q*year);
160 printf("本金为%lf\n:",p);}
161 if(n==3){
162
163 printf("请输入存款金额:");
164 scanf("%lf",&p);
165 printf("请输入年利率:");
166 scanf("%lf",&q);
167
168 printf("请输入年终值:");
169 scanf("%lf",&F);
170
171 year=(int)((F/p-1)/q);
172 // F=p*(1+q*year);
173 printf("年限为%d\n:",year);
174
175 }
176 if(n==4){
177 printf("请输入存款金额:");
178 scanf("%lf",&p);
179 printf("请输入存入存蓄年限:");
180 scanf("%d",&year);
181 printf("请输入年终值:");
182 scanf("%lf",&F);
183 //F=p*pow((1+q/n),year*n);
184 q=(F/p-1)/year;
185 printf("单利的年利率为%lf:\n",q);
186
187
188 }
189
190 printf("\n\t是否要重新计算?(1/0)\n");
191 scanf("%d",&ch);
192 if(ch==1)
193 {
194 goto A;
195 }}
196
197
198 void DengEHuanKuan(){
199 printf("请输入贷款金额:");
200 scanf("%lf",&F);
201 printf("请输入存入贷款年限:");
202 scanf("%d",&year);
203 printf("请输入年利率:");
204 scanf("%lf",&q);
205 p=F*q/(12*(1+q)*(-1+pow(1+q,year)));
206 printf("每月等额本息还款为:%lf\n",p);
207 }
208
209
210
211 main(){
212 int ch,n;
213 while(1){
214 if(n==0) break;
215 innit();
216 menu();
217 printf("\n");
218 printf("please chose<0~4>:");
219 scanf("%d",&ch);
220 switch(ch){
221 case 1:compoundinterest();break;
222 case 2:simpleinterest();break;
223 case 3:DengEHuanKuan();break;
224 case 0:n=0;break;
225 }}}
226 //基金定投收益计算公式:
227 //M=a(1+x)[-1+(1+x)^n]/x
228 //M:预期收益
229 //a:每期定投金额
230 //x:收益率
231 //n:定投期数(公式中为n次方)
232 //注意a、x和n的匹配,月定投金额、月收益率、定投月数,如果是年,统一以后再计算。
233 //假设每月定投300元(每年为3600),年收益15%,定投35年。
运行结果:
