王先生从银行贷了350,000元用于买房,贷款期限为20年

 ⑴用等额本息还款法,计算每月应还本息(每月月供)、20年总利息

⑵用等额本金还款法,计算每月应还本息(每月月供)、20年总利息?

⑶比较两种还款方法,哪种利息多?

2021年贷款利率               年利率(%)    

一至三年(含3年)              贷款 4.75

三至五年(含5年)              贷款 4.75

五年以上                        贷款 4.90               

公积金贷款利率表      

五年以下                     贷款 2.75

五年以上                        贷款 3.25

银行住房贷款计算方法

1、等额本息还款法:

个人购房抵押贷款期限一般都在一年以上,则还款的方式之一是等额本息还款法,即从使用贷款的第二个月起,每月以相等的额度平均偿还贷款本金和利息。计算公式如下:

P:贷款本金   R:月利率    N:还款期数  其中:还款期数=贷款年限×12

每月应还本息 =

Java等额本金算法 等额本金还款法c语言_c语言

总利息=还款期数×每月月供额-贷款本金 

2、等额本金还款法:

   等额本金还款方式比较简单。顾名思义,这种方式下,每次还款的本金还款数是一样的,每月应还利息不一样,每月的利息是递减的,因此,等额本金还款每个月的还款额是不一样的。开始还得多,而后逐月递减。计算公式如下:

P:贷款本金   R:月利率   N:还款期数   

其中:还款期数=贷款年限×12

每月月供额=每月应还本金+当月应还利息

=(贷款本金÷还款期数)+(贷款本金-已归还本金累计额)×月利率

每月应还本金=贷款本金÷还款期数

第M月应还利息=剩余本金×月利率=(贷款本金-已归还本金累计额)×月利率

 =贷款本金×月利率-月还本金×月利率×(M-1)

总利息=贷款本金×月利率×(还款期数+1)÷2

#include <stdio.h>
#include <math.h>
main()
{
    int p; // 贷款本金
    printf("\n请输入住房贷款本金(例:350000(元)):");
    scanf("%d", &p);

    float r = 0.049; // 贷款年利率
    int n;           // 还款期数

    int y; // 贷款年限
    printf("\n请选择输入贷款年限(例:20(年)):");
    scanf("%d", &y);

    n = 12 * y;
    float m1, m2, s1, s2; // 每月应还本息,总利息

    // 等额本金
    int month = y * 12; // 还款总月数
    int p1 = p / month; // 每月应还本金
    float m, m3;        // 第m月应还利息,每月应还本息
    int i;
    for (i = 1; i < n + 1; i++)
    {
        m = p * (r / 12) - p1 * (r / 12) * i; // 第m月应还利息
        m3 = p1 + m;                          // 每月应还本息
        printf("等额本金还款法第%d月应还本息为:%0.2f\n", i, m3);
    }
    s2 = p * r * (n / 12 + 1) / 2;
    printf("\n等额本金还款法总利息为:%0.2f\n\n", s2);

    // 等额本息
    m1 = (p * r / 12 * pow(1 + r / 12, n)) / (pow(1 + r / 12, n) - 1);
    printf("等额本息还款法每月应还本息为:%0.2f\n", m1);
    s1 = n * m1 - p;
    printf("等额本息还款法总利息为:%0.2f\n", s1);

    float arr[2];
    arr[0] = s1;
    arr[1] = s2;
    if (arr[0] > arr[1])
        printf("\n两种贷款方式中,等额本息还款总利息多。\n");
    else
        printf("\n两种贷款方式中,等额本金还款总利息多。\n");
}