用C语言做一个房贷计算计算器,可以选择等额本金或等额本息两种模式,可以直接输入总额或通过输入面积*价格计算~
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void f(double all_num);
int main()
{
system("color F0");
system("title 房贷计算");
char c;
void chooseA(); void chooseB();
while (1)
{
printf("请选择模式:\n"
"A.根据面积、单价计算\n"
"B.根据贷款总额计算\n");
scanf_s("%c", &c, 4);
switch (c)
{
case 'a':
case 'A':chooseA(); break;
case 'b':
case 'B':chooseB(); break;
default:printf("模式选择有误,请输入A/B/a/b选择您想要使用的模式。\n\n");
}
}
return 0;
}
void chooseA()
{
double price, area, all_num;
printf("单价(元/平方米):");
scanf_s("%lf", &price);
printf("面积(平方米):");
scanf_s("%lf", &area);
all_num = price * area;
f(all_num);
}
void chooseB()
{
double all_num;
printf("请输入贷款总额:");
scanf_s("%lf", &all_num);
f(all_num);
}
void f(double all_num)
{
void choose1(double all_num, int num); void choose2(double all_num, int num);
char m, k, kong; int g, o;
printf("按揭成数:");
scanf_s("%d", &o);
scanf_s("%c", &kong, 4);
all_num = all_num * o / 10;
printf("有无打折优惠:");
scanf_s("%c", &m, 4);
scanf_s("%c", &kong, 4);
switch (m)
{
case 'y':
case 'Y':printf("折数:"); scanf_s("%d", &g); scanf_s("%c", &kong, 4); all_num = all_num * g / 10; break;
case 'n':
case 'N':all_num = all_num; break;
default:printf("模式选择有误,请输入Y/N/y/n选择有无打折优惠。\n\n");
}
printf("\n请选择还款模式:\n"
"A.等额本息\n"
"B.等额本金\n");
scanf_s("%c", &k, 4);
scanf_s("%c", &kong, 4);
switch (k)
{
case 'a':
case 'A':choose1(all_num, o); break;
case 'b':
case 'B':choose2(all_num, o); break;
default:printf("模式选择有误,请输入A/B/a/b选择您想要使用的模式。\n\n");
}
}
void choose1(double all_num, int num)
{
double M_repay, Y_rate, sum = 0, w; char kong;
int m, i = 1;//m,还款月数;i,月数
printf("贷款年利率:");
scanf_s("%lf", &Y_rate);
printf("总还款月数:");
scanf_s("%d", &m); scanf_s("%c", &kong, 4);
w = pow((1 + Y_rate / 12), m);
M_repay = all_num * Y_rate / 12 * w / (w - 1);//每月应还=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
printf("\n每月应还%lf\n", M_repay);
sum = M_repay * m;
printf("总还款金额:%lf\n", sum);
printf("首期付款:%g\n", all_num / num * 10 - all_num);
printf("总利息:%lf\n\n", sum - all_num);
}
void choose2(double all_num, int num)
{
double M_repay, M_rate, sum = 0; char kong;
int m, i = 1;//m,还款月数;i,月数
printf("贷款年利率:");
scanf_s("%lf", &M_rate);
printf("总还款月数:");
scanf_s("%d", &m); scanf_s("%c", &kong, 4);
M_repay = all_num / m;//每月应还本金=贷款本金÷还款月数
printf("\n");
for (i = 1; i <= m; i++)
{
printf("第%d个月月供额:%lf;\n", i, M_repay + (all_num - ((double)i - 1) * M_repay) * M_rate / 12); //每月月供额 = (贷款本金÷还款月数)+(贷款本金 - 已归还本金累计额)×月利率
sum = sum + M_repay + (all_num - ((double)i - 1) * M_repay) * M_rate / 12;
}
printf("\n");
printf("总还款金额:%lf\n", sum);
printf("首期付款:%g\n", all_num / num * 10 - all_num);
printf("总利息:%lf\n\n", sum - all_num);
}
祝各位早日买房!