带你学C带你飞第9节课后题动手做0
传送门:https://fishc.com.cn/forum.php?mod=viewthread&tid=67732&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570下面是我写的
#include <stdio.h>
#include <math.h>
int main()
{
float price, area, yir, mir;//单价、面积、年利率、月利率
float interest, loan;//利息、贷款总额
float ave_repay, down_payment;//月均还款、首期付款
float total_price, total_repay;//房款总额、还款总额
int ratio, time;//按揭成数、按揭年数
printf("请输入单价(元/平方): ");
scanf("%f", &price);
printf("请输入面积(平方米): ");
scanf("%f", &area);
printf("请输入按揭成数: ");
scanf("%d", &ratio);
printf("请输入按揭年数: ");
scanf("%d", &time);
printf("请输入当前基准年利率: ");
scanf("%f", &yir);
total_price = price * area;//房款总额
ratio *= 0.1;//按揭成数用户输入的是 7,其实表示的应该是 70%,即 0.7;
time *= 12;//还款月数=还款年数 * 12
loan = total_price * ratio;//贷款本金 = 房款总额 * 按揭成数
mir = yir / 100 / 12;//计算月利率
ave_repay = loan * (mir * pow((1 + mir), time)) / (pow((1 + mir), time) - 1);//月均还款 = 贷款本金 * (月利率 * (1 + 月利率)^还款月数) / ((1 + 月利率)^还款月数 - 1)
interest = time * ave_repay - loan;//总利息 = 还款月数 * 月均还款 - 贷款本金
down_payment = loan + interest - ave_repay * time + ave_repay;//首期付款
total_repay = loan + interest;
printf("========== 报告结果 ==========\n");
printf("房款总额: %.2f元\n", total_price);//房款总额,已计算
printf("首期付款: %.2f元\n", down_payment);//首期付款,已计算
printf("贷款总额: %.2f元\n", loan);//就是贷款本金,已计算
printf("还款总额: %.2f元\n", total_repay);//
printf("支付利息: %.2f元\n", interest);//总利息 ,已计算
printf("月均还款: %.2f元\n", ave_repay);//月均还款,已计算
}
运算结果如下:
我知道肯定有问题,高中这个东西我就没学明白,肯定算法有问题,但是我不想看小甲鱼老师的答案,想了一个晚上都没有想明白哪里有问题,算式应该是对的把
请教大神 试试把所有的int换为float,输入输出的格式符用整形 zhangjinxuan 发表于 2022-12-9 21:48
试试把所有的int换为float,输入输出的格式符用整形
小甲鱼老师要求前面定义变量,输入那块,最后的输出,都是给好的不让改,你看一下那个传送门 本帖最后由 jhq999 于 2022-12-10 07:50 编辑
铭凡 发表于 2022-12-10 00:16
小甲鱼老师要求前面定义变量,输入那块,最后的输出,都是给好的不让改,你看一下那个传送门
ratio *= 10;//按揭成数用户输入的是 7,其实表示的应该是 70%,即 0.7;//////////////////要懂得变通
time *= 12;//还款月数=还款年数 * 12
loan = total_price * ratio/100; jhq999 发表于 2022-12-10 07:43
你看传送门,按揭成数,输入是7,但是应该是0.7,不就是×0.1吗,你咋×10了呢?
time *= 12;这句你没有改啊
第三句为什么除以100?贷款本金 = 房款总额 * 按揭成数,这句话是小甲鱼老师给出来的,按揭成数我都换成0.7了,直接×就行了啊 本帖最后由 jhq999 于 2022-12-10 12:34 编辑
铭凡 发表于 2022-12-10 08:06
你看传送门,按揭成数,输入是7,但是应该是0.7,不就是×0.1吗,你咋×10了呢?
time *= 12;这句你没 ...
int ratio是整数类型没有小数,所以要懂得变通,7成是%70,直接变成70,后面用到就除以100,没用到改什么? jhq999 发表于 2022-12-10 12:32
int ratio是整数类型没有小数,所以要懂得变通,7成是%70,直接变成70,后面用到就除以100,没用到改 ...
明白你意思了,就是说我ratio *= 0.1之后,这个东西就是0了,怪不得后面都是0。那如果我强制转换成浮点型呢?比如(int)ratio *= 0.1,这样子可以不? 铭凡 发表于 2022-12-10 14:46
明白你意思了,就是说我ratio *= 0.1之后,这个东西就是0了,怪不得后面都是0。那如果我强制转换成浮点型 ...
不行, jhq999 发表于 2022-12-10 15:11
不行,
OK, 感谢
页:
[1]