银行中的等额本息,及其与等额本金的对比-C程序

二期

研究背景:由于一期小程序效果不错,数额准确但输出格式不太美观,与甲方达成协议,继续完成二期工程(在次小声吐槽:二期就35元再次为一抖米折腰(ㄒoㄒ))

研究目的:做出一个小程序,能让用户自定义等额本息贷款信息(eg:本金,利率,周期),方便明了,以文件方式输出所要查询每期应还数额。

研究工具(语言):Visual Studio Code

等额本息介绍: 等额本息是指一种贷款的还款方式,指在还款期内,每月偿还同等数额的贷款(包括本金和利息)。等额本息和等额本金是不一样的概念,虽然刚开始还款时每月还款额可能会低于等额本金还款方式的额度,但是最终所还利息会高于等额本金还款方式,该方式经常被银行使用。

数学计算公式:

所以依据本函数,以数学基础我们知道,这是一个常数函数

所以以本方法还贷,每月还款数额相同。

// 等额本金project1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>//头文件
#include <ostream>
#include <stdio.h>
#include <math.h>



using namespace std;

extern double round2Point(float oldVal);

int main()
{
    int j,i;
    int a;//第几月
    double b;//第a月的利息;
    double c;//每月还下的本金
    double m;//等额本金a月还款数

    double n;//等额本息a月还款数

    double x;//本金
    int y;//还款总月数
    double z;//年利率
    double yue;//月利率中间计算
    double lu;
    double you;
    double zhong=1;
    double esum=0;//等额本金总额
    double fsum = 0;//等额本息总额
   printf("借款总金额:");
   scanf("%lf", &x);

    printf("还款总月数:");
    scanf("%d", &y);

   printf("年利率:");
   scanf("%lf", &z);
  //printf("查询月数:");  本来是想仅提供查询月份数据 奈何甲方提出
   //scanf("%d", &a);      奈何甲方提出要显示 所有周期应归还数额 的需求

        


//创建文件。
    //D:\大一下\lunar\小课题\1.等额本金\VS\等额本金project1\等额本金project1\等额本金project1.cpp
    FILE* fp;//涉及到对文件的操作,定义一个文件指针    
                   
    if ((fp = fopen("D:\\大一下\\lunar\\小课题\\1.等额本金\\VS\\等额本金project1\\等额本金project1\\test.txt", "w")) == NULL)
    {
        printf("can not open file\n");
        exit(0);
    }
    
    //等额本息每月还款数额相同
    lu = z / 12;
    yue =lu+1;
    //zhong = power(yue, y);
    for (a = 1; a <= y; a++)
    {
        zhong = zhong * yue;
    }
    you = lu * zhong * x;
    n = you / (zhong - 1);
    printf("每期等额本息还款数:");
    printf("%.2lf\n", n);
    fsum=n*y;
    


    for (a = 1; a<= y; a++)
    {
        std::cout << "第" << a << "期" << std::endl;
        printf("%d", a);
        printf("期");
        c = x / y;

        j = c * (a - 1);
        b = (x - j) * z / 12;
        double round2Point(b);

        m = b + c;
        esum = esum + m;
        printf("等额本金还款数:");
        printf("%.2lf\n", m);
        fprintf(fp, "第%d期  等额本金还款数:%.2lf     等额本息还款数:%.2lf\n", a, m,n);
    }
    printf("等额本金还款总额:  %.2lf    等额本息还款数:%.2lf\n ", esum, fsum);
    fprintf(fp, "等额本金还款总额: %.2lf   等额本息还款数:%.2lf\n ", esum,fsum);


    fclose(fp);
    //c = x / y;

    //j = c * (a - 1);
    //b = (x - j) * z / 12;
    //double round2Point(b);

    //m = b + c;


   // printf("还款数:");
    //printf("%.2f", m);
}

double round2Point(float oldVal)//四舍五入函数
{
    double newVal = oldVal * 100;
    int tmp = newVal;
    if (newVal - tmp >= 0.5)
        tmp++;

    newVal = tmp;
    newVal /= 100;
    return newVal;


    //double newVal = oldVal * 100 + 0.5;
    //int tmp = newVal;
    //newVal = tmp;
    //newVal /= 100.0;
    //return newVal;


}

自行放大查看 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值