提问人:NgoMinh 提问时间:11/15/2023 更新时间:11/15/2023 访问量:80
C 语言数组(初级) - 我的输出与答案不同
Array in C (Beginner) - My output are different from the answer
问:
我的代码没有产生所需的输出,我仍然不知道为什么。你能帮我解决这个问题吗?谢谢!
问题: 计算每月总还款额以及与固定利率抵押贷款的初始贷款金额的差额。 一个人想在河内买房,并接受了银行的固定利率抵押贷款,初始贷款金额为 m,年利率为 r%,期限为 d。每个月,买方必须支付本金和利息,具体如下: 每月固定本金支付额为m / (d * 12)。 每月利息支付将根据剩余的本金金额计算。第一个月,它将是 (m * r / 12)。 在接下来的几个月里,它将是 ((m - m / (d * 12)) * r / 12),依此类推,随着时间的推移而减少。
请编写一个程序,以初始贷款金额、固定利率和贷款期限为输入,并在屏幕上打印 d 年内的每月总还款额以及与初始贷款金额的差额。这些值应显示为四舍五入到小数点后 2 位的浮点数。
INPUT
1000000000 0.11 10
OUTPUT
1554583333.33 554583333.33
这是我的解决方案,但输出与答案的最后几个数字不同
#include <stdio.h>
int main()
{
long long int money;
double rate;
int year;
scanf("%lld %lf %d", &money, &rate, &year);
double fixed_money=money/(year*12);
double total_money=0;
double a[year*12];
for( int i=0; i< year*12; i++){
a[i]= fixed_money+(money-i*fixed_money)*rate/12;
total_money+=a[i];
}
printf("%.2lf %.2lf", total_money, total_money-money );
}
输出是:
1554583315.15 554583315.15
答:
3赞
chux - Reinstate Monica
11/15/2023
#1
关键问题是这是一个整数除法,因此最终输出的值为 8333333.0:money/(year*12)
fixed_money
1554583315.15 554583315.15
使用 ,或类似,商为 8333333.33333...和最终输出:1.0*money/(year*12)
1554583333.33 554583333.33
然而,这也是错误的,因为每月付款需要四舍五入到最接近的美分或 8333333.33,最终输出:
1554583333.15 554583333.15
上一个:索引/数组故障排除:家庭作业
评论
a
total_money += fixed_money+(money-i*fixed_money)*rate/12;
money/(year*12)
12
12.0
money
long long int
double
scanf