1 //F=P*(1+i)^N
2 //F=A((1+i)^N-1)/i
3 //I=P*i*N
4 //每月还款额=[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
5 #include<stdio.h>
6 #include<math.h>
7 #include<stdlib.h>
8 #define warn1 while(0 ==
9 #define warn2 ){ while('\n' != getchar()) { } printf("\t\t输入不合法!\n\t\t请重新输入:"); }
10 double fuli()
11 {
12 double P,i,F;//F:复利终值 P:本金 i:利率
13 int N,M;//N:利率获取时间的整数倍 M:复利次数
14 printf("\t\t本金:");
15 warn1 scanf("%lf",&P) warn2;
16 printf("\t\t年利率(%%):");
17 warn1 scanf("%lf",&i) warn2;
18 printf("\t\t存入年限:");
19 warn1 scanf("%d",&N) warn2;
20 printf("\t\t年复利次数:");
21 warn1 scanf("%d",&M) warn2;
22 F=P*pow(1+i/M*0.01,M*N);
23 printf("\t\t复利终值:%lf\n",F);
24 return F;
25 }
26 double danli()
27 {
28 double P,i,F;//F:复利终值 P:本金 i:利率
29 int N;//N:利率获取时间的整数倍
30 printf("\t\t本金:");
31 warn1 scanf("%lf",&P) warn2;
32 printf("\t\t年利率(%%):");
33 warn1 scanf("%lf",&i) warn2;
34 printf("\t\t存入年限:");
35 warn1 scanf("%d",&N) warn2;
36 F=P+(P*i*0.01*N);
37 printf("\t\t终值:%lf\n",F);
38 return F;
39 }
40 double benjings()
41 {
42 double P,i,F;//F:复利终值 P:本金 i:利率
43 int N,M;//N:利率获取时间的整数倍 M:复利次数
44 printf("\t\t复利终值:");
45 warn1 scanf("%lf",&F) warn2;
46 printf("\t\t年利率(%%):");
47 warn1 scanf("%lf",&i) warn2;
48 printf("\t\t存入年限:");
49 warn1 scanf("%d",&N) warn2;
50 printf("\t\t年复利次数:");
51 warn1 scanf("%d",&M) warn2;
52 P=F/pow(1+i/M*0.01,M*N);
53 printf("\t\t本金:%lf\n",P);
54 return P;
55 }
56 double nianxian()
57 {
58 double P,i,F;//F:复利终值 P:本金 i:利率
59 int N,M;//N:利率获取时间的整数倍 M:复利次数
60 printf("\t\t本金:");
61 warn1 scanf("%lf",&P) warn2;
62 printf("\t\t年利率(%%):");
63 warn1 scanf("%lf",&i) warn2;
64 printf("\t\t年复利次数:");
65 warn1 scanf("%d",&M) warn2;
66 printf("\t\t复利终值:");
67 warn1 scanf("%lf",&F) warn2;
68 N=log(F/P)/log(1+i/M*0.01)/M;
69 printf("\t\t年限:%d\n",N);
70 return N;
71 }
72 double lilv()
73 {
74 double P,i,F;//F:复利终值 P:本金 i:利率
75 int N,M;//N:利率获取时间的整数倍 M:复利次数
76 printf("\t\t本金:");
77 warn1 scanf("%lf",&P) warn2;
78 printf("\t\t存入年限:");
79 warn1 scanf("%d",&N) warn2;
80 printf("\t\t年复利次数:");
81 warn1 scanf("%d",&M) warn2;
82 printf("\t\t复利终值:");
83 warn1 scanf("%lf",&F) warn2;
84 i=(pow(F/P,1.0/(M*N))-1)*M/0.01;
85 printf("\t\t年利率:%lf\n",i);
86 return i;
87 }
88 double dingqi()
89 {
90 double P,i,F;//F:复利终值 P:本金 i:利率
91 int N,M;//N:利率获取时间的整数倍 M:复利次数
92 int m;//月数
93 int ch;
94 printf("\t\t1.按年投资 2.按月投资\n");
95 printf("\t\t");
96 warn1 scanf("%d",&ch) warn2;
97 if(ch==1){
98 printf("\t\t年投资金额:");
99 warn1 scanf("%lf",&P) warn2;
100 printf("\t\t年利率(%%):");
101 warn1 scanf("%lf",&i) warn2;
102 printf("\t\t定投年数:");
103 warn1 scanf("%d",&N) warn2;
104 F=P*(1+(i*0.01))*(-1+pow(1+(i*0.01),N))/(i*0.01);
105 printf("\t\t复利终值:%lf\n",F);
106 }
107 if(ch==2){
108 printf("\t\t月投资金额:");
109 warn1 scanf("%lf",&P) warn2;
110 printf("\t\t年利率(%%):");
111 warn1 scanf("%lf",&i) warn2;
112 printf("\t\t定投月数:");
113 warn1 scanf("%d",&m) warn2;
114 F=P*(1+(i*0.01/12))*(-1+pow(1+(i*0.01/12),m))/(i*0.01/12);
115 printf("\t\t终值:%lf\n",F);
116 }
117 return F;
118 }
119 double refund()
120 {
121 double P,i,mp;//mp每月还款额
122 int N,M;
123 printf("\t\t贷款金额:");
124 warn1 scanf("%lf",&P) warn2
125 printf("\t\t年利率:");
126 warn1 scanf("%lf",&i) warn2
127 printf("\t\t年限:");
128 warn1 scanf("%d",&N) warn2
129 printf("\t\t年复利次数:");
130 warn1 scanf("%d",&M) warn2;
131 mp = P*i*0.01/12*pow((1.0+i/M*0.01/12),M*N*12)/(pow(1.0+i*0.01/M/12,M*N*12)-1);
132 return mp;
133
134 }
135
136
137
138 void main()
139 {
140 double F1;
141 int ch2;
142 while(1)
143 {
144 printf("\t\t****************复利计算器****************\n");
145 printf("\t\t| 1 复利 |\n");
146 printf("\t\t| 2 单利 |\n");
147 printf("\t\t| 3 本金估算 |\n");
148 printf("\t\t| 4 投资年限估算 |\n");
149 printf("\t\t| 5 投资利率估算 |\n");
150 printf("\t\t| 6 定期投资收益计算 |\n");
151 printf("\t\t| 7 等额本息还款计算 |\n");
152 printf("\t\t| 0 退出 |\n");
153 printf("\t\t******************************************\n");
154 printf("\t\t请选择:");
155 warn1 scanf("%d",&ch2) warn2
156 switch(ch2){
157 case 1:
158 F1 = fuli();
159 break;
160 case 2:
161 F1 = danli();
162 break;
163 case 3:
164 F1 = benjings();
165 break;
166 case 4:
167 F1 = nianxian();
168 break;
169 case 5:
170 F1 = lilv();
171 break;
172 case 6:
173 F1 = dingqi();
174 break;
175 case 7:
176 F1 = refund();
177 break;
178 case 0:
179 exit(1);
180 break;
181 default:
182 printf("输入不合法!!\n");
183 continue ;
184 }
185
186 printf("\t\t结果约为:%.2lf\n",F1);
187
188 }
189 }
View Code
功能分为7部分
1.复利 2.单利 3.本金估算 4.投资年限估算 5.投资利率估算 6.定期投资收益计算 7.等额本息还款计算
首先选择查询的功能,然后按值输入。
本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:
如果按照单利计算,本息又是多少呢?
假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?
(定额定投收益计算办法)
7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应?
相互观赏程序运行情况。
8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)