老哥们帮帮忙
#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;
}
请问我这个程序哪里有错误
为啥我输出的数据里有两三个数据差了一点点{:10_269:} 表示不懂按揭是啥 昨非 发表于 2020-11-30 22:56
表示不懂按揭是啥
阿这,按揭年数就是贷款的时间,按揭成数就是贷款的钱占房价的比例{:10_269:}{:10_269:}我也是百度了解的 昨非 发表于 2020-11-30 22:56
表示不懂按揭是啥
老哥,我还想问一下,flaot可以存放整数吗?还有int可以存放小数吗? C160 发表于 2020-12-1 21:34
老哥,我还想问一下,flaot可以存放整数吗?还有int可以存放小数吗?
float可以存整数,但是会添加小数点和后面的0(也就不是整数了)
int存放小数会损失精度,就是小数点和后面全没了 昨非 发表于 2020-12-1 22:03
float可以存整数,但是会添加小数点和后面的0(也就不是整数了)
int存放小数会损失精度,就是小数点和 ...
奥奥,大佬前面那个程序有啥问题不,我打的数据总是和正确答案差一点{:10_269:} C160 发表于 2020-12-1 23:10
奥奥,大佬前面那个程序有啥问题不,我打的数据总是和正确答案差一点
比如? 首期付款那个多了一个0.02还款总额,支付利息,月均还款都有类似的错误 本帖最后由 风过无痕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;
}
忘记加行号了 你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称,a、b、c、d、e、f、g、h、i、j、k、l、m 这样下来,我敢保证,一个月以后,不!一个星期以后,你自己,没有半个小时,也搞不清楚,这些变量到底哪个是哪个 C160 发表于 2020-12-1 23:19
首期付款那个多了一个0.02还款总额,支付利息,月均还款都有类似的错误
你还是没说到底输入是啥?输出是啥?输出正确应该是啥 风过无痕1989 发表于 2020-12-1 23:46
你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称 ...
{:10_257:}{:10_257:}阿,好像是这样,所以一般大佬一般都是打英文吗?{:10_269:} 风过无痕1989 发表于 2020-12-1 23:46
你的程序,我用 VS2015 运行正常,没有问题
但是,你的程序,让人看了眼花瞭乱的,主要是你设置的变量名称 ...
可能是我哪里算错了 C160 发表于 2020-12-2 00:03
阿,好像是这样,所以一般大佬一般都是打英文吗?
最好不要使用中文作为变量名,若不懂英文的话,用汉语拼音也是可以的 C160 发表于 2020-12-2 00:05
可能是我哪里算错了
我再帮你看看 C160 发表于 2020-12-2 00:05
可能是我哪里算错了
若只差 0.02 ,那问题是不大的,这是计算精度引起的。不必太过在意,程序是对的,说明我们已经掌握了此题的编写方法。下图中间那个,我就是将你的程序中的所有整数改为了带小数的整数,比如:10 改为 10.0
页:
[1]