鱼C论坛

 找回密码
 立即注册
查看: 1851|回复: 15

[已解决]老哥们帮帮忙

[复制链接]
发表于 2020-11-30 22:31:08 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
#include <math.h>

int main()
{
        float a,b,c,d;  //房屋单价,房屋面积,基准年利率,基准月利率
        float e,f,g,h,i,j;   //房款总额,首期付款,贷款总额,支付利息,月均还款,还款总额
        int k,l,m;       //按揭成数,按揭年数
       
       
        printf("请输入房屋单价 (元/平方):    ");
        scanf("%f",&a);
        printf("请输入房屋面积:   ");
        scanf("%f",&b);
        printf("请输入基准年利率:   ");
        scanf("%f",&c);
        printf("请输入按揭成数:   ");
        scanf("%d",&k);
        printf("请输入按揭年数:   ");
        scanf("%d",&l);
       
        m=12*l;
        e=a*b;
        f=e*(1-(float)k/10);
        g=e*k/10;
        d=c/100/12;
        i=g*(d*pow((1+d),m)/(pow((1+d),m)-1));
        h=12*(float)l*i-g;
        j=h+g;
       
        printf("=========报告结果============\n");
        printf("房贷总额:%.2f\n",e);
        printf("首期付款:%.2f\n",f);
        printf("贷款总额:%.2f\n",g);
        printf("还款总额:%.2f\n",j);
        printf("支付利息:%.2f\n",h);
        printf("月均还款:%.2f\n",i);
       
       
        return 0;
       
       
         
}



请问我这个程序哪里有错误
为啥我输出的数据里有两三个数据差了一点点
最佳答案
2020-12-2 00:49:19
C160 发表于 2020-12-2 00:05
可能是我哪里算错了

若只差 0.02 ,那问题是不大的,这是计算精度引起的。不必太过在意,程序是对的,说明我们已经掌握了此题的编写方法。下图中间那个,我就是将你的程序中的所有整数改为了带小数的整数,比如:10 改为 10.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 22:56:21 | 显示全部楼层
表示不懂按揭是啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 20:49:49 From FishC Mobile | 显示全部楼层
昨非 发表于 2020-11-30 22:56
表示不懂按揭是啥

阿这,按揭年数就是贷款的时间,按揭成数就是贷款的钱占房价的比例我也是百度了解的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 21:34:12 From FishC Mobile | 显示全部楼层
昨非 发表于 2020-11-30 22:56
表示不懂按揭是啥

老哥,我还想问一下,flaot可以存放整数吗?还有int可以存放小数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 22:03:05 | 显示全部楼层
C160 发表于 2020-12-1 21:34
老哥,我还想问一下,flaot可以存放整数吗?还有int可以存放小数吗?

float可以存整数,但是会添加小数点和后面的0(也就不是整数了)
int存放小数会损失精度,就是小数点和后面全没了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 23:10:54 From FishC Mobile | 显示全部楼层
昨非 发表于 2020-12-1 22:03
float可以存整数,但是会添加小数点和后面的0(也就不是整数了)
int存放小数会损失精度,就是小数点和 ...

奥奥,大佬前面那个程序有啥问题不,我打的数据总是和正确答案差一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 23:16:47 | 显示全部楼层
C160 发表于 2020-12-1 23:10
奥奥,大佬前面那个程序有啥问题不,我打的数据总是和正确答案差一点

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

使用道具 举报

 楼主| 发表于 2020-12-1 23:19:30 From FishC Mobile | 显示全部楼层
首期付款那个多了一个0.02还款总额,支付利息,月均还款都有类似的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 23:38:10 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-2 00:28 编辑
#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("==========报告结果==========\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;
}

忘记加行号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 23:46:50 | 显示全部楼层
你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称,a、b、c、d、e、f、g、h、i、j、k、l、m 这样下来,我敢保证,一个月以后,不!一个星期以后,你自己,没有半个小时,也搞不清楚,这些变量到底哪个是哪个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 23:47:36 | 显示全部楼层
C160 发表于 2020-12-1 23:19
首期付款那个多了一个0.02还款总额,支付利息,月均还款都有类似的错误

你还是没说到底输入是啥?输出是啥?输出正确应该是啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 00:03:45 From FishC Mobile | 显示全部楼层
风过无痕1989 发表于 2020-12-1 23:46
你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称 ...

阿,好像是这样,所以一般大佬一般都是打英文吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 00:05:40 From FishC Mobile | 显示全部楼层
风过无痕1989 发表于 2020-12-1 23:46
你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称 ...

可能是我哪里算错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 00:27:45 | 显示全部楼层
C160 发表于 2020-12-2 00:03
阿,好像是这样,所以一般大佬一般都是打英文吗?

最好不要使用中文作为变量名,若不懂英文的话,用汉语拼音也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 00:29:39 | 显示全部楼层
C160 发表于 2020-12-2 00:05
可能是我哪里算错了

我再帮你看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 00:49:19 | 显示全部楼层    本楼为最佳答案   
C160 发表于 2020-12-2 00:05
可能是我哪里算错了

若只差 0.02 ,那问题是不大的,这是计算精度引起的。不必太过在意,程序是对的,说明我们已经掌握了此题的编写方法。下图中间那个,我就是将你的程序中的所有整数改为了带小数的整数,比如:10 改为 10.0
数据类型的比较.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 13:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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