发现N年前为了买房贷款写了个计算器,,分享下吧
公积金贷款计算器

/*
等额本金贷款计算公式:
每月还款金额= (贷款本金 / 还款月数)+(本金 — 已归还本金累计额)×每月利率
等额本息每月还款额计算公式如下:
[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
*/
#include <iostream.h>
/*用户输入的变量*/
double g_daikuan_total = 35 * 10000; //贷款总额, 40w, 这个要用double型不然算出来的结果不对
int g_huankuan_years = 5; //还款款年限, 15 y
int g_huankuan_months = g_huankuan_years * 12; //还款月数, 15 * 12
double g_lilv_moth = 4.5 / 100 / 12; //月利率
double g_daikuan_total = 35 * 10000; //贷款总额, 40w, 这个要用double型不然算出来的结果不对
int g_huankuan_years = 5; //还款款年限, 15 y
int g_huankuan_months = g_huankuan_years * 12; //还款月数, 15 * 12
double g_lilv_moth = 4.5 / 100 / 12; //月利率
/*运算需要的中间变量*/
double g_yihuankuan_total; //已归还本金累计额
double g_guihuanlixi_last; //本次归还的利息
double g_guihuanbenjin_last; //本次归还的本金
double g_yihuankuan_total; //已归还本金累计额
double g_guihuanlixi_last; //本次归还的利息
double g_guihuanbenjin_last; //本次归还的本金
/*结果保存*/
double g_lixi_total; //利息总额
double g_lixi_total; //利息总额
//等额本金本月还款数计算
/*
返回值: 本月需要还款的数目
参数: 本月为第几个月份
*/
double get_thismonth_money (int month_no)
{
double tmpNum = 0;
tmpNum = g_daikuan_total / g_huankuan_months; //(贷款本金 / 还款月数
g_guihuanbenjin_last = tmpNum;
g_guihuanlixi_last = (g_daikuan_total - g_yihuankuan_total) * g_lilv_moth; //+(本金 — 已归还本金累计额)×每月利率 ---本月归还的利息
return g_guihuanlixi_last + g_guihuanbenjin_last;
}
/*
返回值: 本月需要还款的数目
参数: 本月为第几个月份
*/
double get_thismonth_money (int month_no)
{
double tmpNum = 0;
tmpNum = g_daikuan_total / g_huankuan_months; //(贷款本金 / 还款月数
g_guihuanbenjin_last = tmpNum;
g_guihuanlixi_last = (g_daikuan_total - g_yihuankuan_total) * g_lilv_moth; //+(本金 — 已归还本金累计额)×每月利率 ---本月归还的利息
return g_guihuanlixi_last + g_guihuanbenjin_last;
}
void main()
{
cout<<"贷款总额"<< g_daikuan_total <<"万\n" ;
cout<<"贷款年限"<< g_huankuan_years <<"年\n" ;
cout<<"月利率"<< g_lilv_moth <<"\n" ;
cout<<"采用等额本金,还款记录如下\n" ;
double everyMonthMoney = 0;
double* lixiMap = new double[g_huankuan_months];
for (int i = 1 ; i <= g_huankuan_months; i++)
{
everyMonthMoney = get_thismonth_money(i);
cout<<"第"<< i <<"月" << everyMonthMoney<< "本金"<<g_guihuanbenjin_last<< "利息"<< g_guihuanlixi_last<<endl;
{
everyMonthMoney = get_thismonth_money(i);
cout<<"第"<< i <<"月" << everyMonthMoney<< "本金"<<g_guihuanbenjin_last<< "利息"<< g_guihuanlixi_last<<endl;
g_yihuankuan_total += g_guihuanbenjin_last; //要把每期已经换的钱加起来,必须有这一行
g_lixi_total += g_guihuanlixi_last;// 为了最后输出总利息
lixiMap[i - 1] = g_guihuanlixi_last;
}
g_lixi_total += g_guihuanlixi_last;// 为了最后输出总利息
lixiMap[i - 1] = g_guihuanlixi_last;
}
cout<<"总利息是"<<g_lixi_total<<"\n";
delete []lixiMap;
}
}