关于#理财收益C语言的问题


#include 
int main()
{
    double x, t, r, m, year;
    scanf("%lf %lf", &x, &t);
    if (t <= 20)
    {
        if (x<5)
            r = 0.03;
        else if (x>=5 && x<20)
            r = 0.035;
        else if (x>=20 && x<50)
               r = 0.04;
        else if (x>=50 && x<200)
            r = 0.045;
        else if (x>=200)
            r = 0.05;
        for (year=0, m=x; yearm = m+m*r;
    }
    else
    {
        if (x<5)
            r = 0.03;
        else if (x>=5 && x<20)
            r = 0.035;
        else if (x>=20 && x<50)
               r = 0.04;
        else if (x>=50 && x<200)
            r = 0.045;
        else if (x>=200)
            r = 0.05;        
        for (year=0, m=x; year<20; year++)   //yeae<20而非<=20是因为year是从0开始计数的
            m = m+m*r;
    }
    printf("%.2lf\n", m);
    
    return 0;
}

问题描述
某银行理财产品采用年结复利方式计算收益,也即一年结算一次,且下一年本金为上一年的本息和,年利率与本金x相关,具体如下:
本金x小于5万,年利率为3%;
5万<=x<20万,年利率为3.5%;
20万<=x<50万,年利率为4%;
50万<=x<200万,年利率为4.5%;
本金200万以上,年利率为5%。
所有理财产品持有期超过20年,不再计入利息。

输入格式
输入第一行包含两个数,分别为本金x和持有年限t,以空格分隔。

输出格式
输出本息和(即本金与利息之和),保留2位有效数字。

样例输入
5 2
样例输出
5.36

以上是学校oj上的题目和我的C语言代码,但是只得了80分,请问哪里有问题T^T

举个例子叭,比如说我本金为4.9万,那么我第一年的本息和就超过5万了,那么第二年开始利率就应该为3.5,你的代码中并没有考虑这种因为利息导致本金超过当前利率档位的情况