鱼C论坛

 找回密码
 立即注册
查看: 2422|回复: 8

[已解决]带你学C带你飞第9节课后题动手做0

[复制链接]
发表于 2022-12-9 21:05:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
传送门:https://fishc.com.cn/forum.php?m ... peid%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);  //月均还款,已计算
}

运算结果如下:

QQ截图20221209210452.png

我知道肯定有问题,高中这个东西我就没学明白,肯定算法有问题,但是我不想看小甲鱼老师的答案,想了一个晚上都没有想明白哪里有问题,算式应该是对的把

请教大神
最佳答案
2022-12-10 12:32:48
本帖最后由 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,没用到改什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-9 21:48:31 | 显示全部楼层
试试把所有的int换为float,输入输出的格式符用整形
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-10 00:16:15 | 显示全部楼层
zhangjinxuan 发表于 2022-12-9 21:48
试试把所有的int换为float,输入输出的格式符用整形

小甲鱼老师要求前面定义变量,输入那块,最后的输出,都是给好的不让改,你看一下那个传送门
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-10 07:43:56 | 显示全部楼层
本帖最后由 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; 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-10 08:06:59 | 显示全部楼层

你看传送门,按揭成数,输入是7,但是应该是0.7,不就是×0.1吗,你咋×10了呢?

time *= 12;这句你没有改啊

第三句为什么除以100?贷款本金 = 房款总额 * 按揭成数,这句话是小甲鱼老师给出来的,按揭成数我都换成0.7了,直接×就行了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-10 12:32:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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,没用到改什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-10 14:46:25 | 显示全部楼层
jhq999 发表于 2022-12-10 12:32
int ratio是整数类型没有小数,所以要懂得变通,7成是%70,直接变成70,后面用到就除以100,没用到改 ...

明白你意思了,就是说我ratio *= 0.1之后,这个东西就是0了,怪不得后面都是0。那如果我强制转换成浮点型呢?比如(int)ratio *= 0.1,这样子可以不?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-10 15:11:54 | 显示全部楼层
铭凡 发表于 2022-12-10 14:46
明白你意思了,就是说我ratio *= 0.1之后,这个东西就是0了,怪不得后面都是0。那如果我强制转换成浮点型 ...

不行,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-10 16:24:03 | 显示全部楼层

OK, 感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表