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