复利计算器

  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年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

posted @ 2016-03-13 17:38  32朱杰  阅读(952)  评论(0编辑  收藏  举报