Cehic 发表于 2020-10-9 18:27:09

算术运算符课后作业买房问题

本帖最后由 Cehic 于 2020-10-9 18:29 编辑

萌新求助
我发现一个问题----我将课后答案复制粘贴之后运行后得到的答案和标准答案总差一点儿(实在想不出为什么)附图

永恒的蓝色梦想 发表于 2020-10-9 19:10:33

把 float 改成 double

风过无痕1989 发表于 2020-10-9 19:21:59

第17行错误:scanf("%d",&ratio);

应为:scanf("%f",&ratio);

Cehic 发表于 2020-10-9 19:48:02

永恒的蓝色梦想 发表于 2020-10-9 19:10
把 float 改成 double

QQ图片20201009194654.png

Cehic 发表于 2020-10-9 19:48:37

永恒的蓝色梦想 发表于 2020-10-9 19:10
把 float 改成 double

不行呀,乱码了

Cehic 发表于 2020-10-9 19:49:54

风过无痕1989 发表于 2020-10-9 19:21
第17行错误:scanf("%d",&ratio);

应为:scanf("%f",&ratio);

好像不行,乱码了

永恒的蓝色梦想 发表于 2020-10-9 19:50:18

Cehic 发表于 2020-10-9 19:48


你发的图片我看不见。
把 float 改成 double 后,还需要把 %f 改成 %lf。
不过,浮点数有误差是正常的,放心用吧。

Cehic 发表于 2020-10-9 20:34:56

永恒的蓝色梦想 发表于 2020-10-9 19:50
你发的图片我看不见。
把 float 改成 double 后,还需要把 %f 改成 %lf。
不过,浮点数有误差是正常的 ...

整数加减能整出.01就很难受(保留了两位小数)

风过无痕1989 发表于 2020-10-9 21:17:17

#include <stdio.h>
#include <math.h>
int main()
{
    double price,area,yir,mir;                                                // 盖价、面积、年利率、且利率
    double interest,ratio,loan;                                                // 利息、贷款总额
    double ave_repay,down_payment;                                 // 月均还款、首期付款
    double total_price,total_repay;                                        // 房款总额、还款总额
    int time;                                                                        // 按揭成数、按揭年数

    printf("请输入单价(元/平方): ");
    scanf("%lf",&price);
    printf("请输入面积: ");
    scanf("%lf",&area);
    printf("请输入按揭成数: ");
    scanf("%lf",&ratio);
    printf("请输入按揭年数: ");
    scanf("%d",&time);
    printf("请输入当年基准年利率: ");
    scanf("%lf",&yir);
       
    mir = yir / 100 / 12;                                                         // 年利率需要除以100得到,因为用户输入是5.4(%),而不是0.054
    time = time * 12;
    total_price = price * area;
    loan = total_price * ratio / 10;                                          // 这里不能写成(ratio/10),否则結果会变成0
    ave_repay = loan * mir * pow((1 + mir),time) / (pow((1 + mir),time) - 1);
    interest = ave_repay * time - loan;
    total_repay = loan + interest;
    down_payment = total_price * (1 - (float)ratio / 10);      //强制转换ratio为浮点型
       
    printf("==========报告结果==========\n");
    printf("房款总额: %.2lf元\n",total_price);
    printf("首期付款: %.2lf元\n",down_payment);
    printf("贷款总额: %.2lf元\n",loan);
    printf("还款总额: %.2lf元\n",total_repay);
    printf("支付利息: %.2lf元\n",interest);
    printf("月均还款: %.2lf元\n",ave_repay);
    return 0;
}

页: [1]
查看完整版本: 算术运算符课后作业买房问题