C语言实现房贷计算器

用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);
}

祝各位早日买房!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值