s1e9 练习求大佬解惑啊。。。
公式顺序不同出的结果不一样啊total_repay=time*12.0*ave_repay;
interest=total_repay-loan;
这两句放到
ave_repay=loan*(mir*pow((1.0+mir),time*12.0))/(pow((1.0+mir),time*12.0)-1.0);
之前输出的还款总额、支付利息结果就错了。。。貌似是溢出了
求大佬解惑原因。。。写公式还有顺序得吗?感觉没有互相占用变量的时候啊{:10_266:}
#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);
mir=yir/100.0/12.0;/*月利率*/
total_price=price*area;
down_payment=total_price*(1.0-ratio/10.0);
loan=total_price-down_payment;
ave_repay=loan*(mir*pow((1.0+mir),time*12.0))/(pow((1.0+mir),time*12.0)-1.0);
total_repay=time*12.0*ave_repay;
interest=total_repay-loan;
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);
return 0;
} pow返回值是double ,问题出在这,自己看看类型转换处理下就可以了 ba21 发表于 2020-2-25 22:54
pow返回值是double ,问题出在这,自己看看类型转换处理下就可以了
那应该和公式写的顺序没关系啊。。。但是改变公式顺序就会出错。。。不改就不会错。。。 拖延症大叔 发表于 2020-2-25 23:22
那应该和公式写的顺序没关系啊。。。但是改变公式顺序就会出错。。。不改就不会错。。。
还是那句话 pow返回值是double
不要非得给你写出正确代码吧。那这问题你问起还有函意吗? 本帖最后由 转会但姿势丶 于 2020-2-26 11:57 编辑
这题我做过。
编译代码的时候要注意先后顺序。
比如你第一行的变量需要第二行变量的值,这样的话编译器会报错。
就像初中数学的证明题(不是反证法)一样,你如果要证明一个结论,你是不是要拼凑足够多的条件去证明它,好像越说越乱了,总之就是不要无中生有,没有的,你就要相反设法去创造它
还有,你第25行括号里面应该是:((10 - ratio) / 10),第26行不要那么写,虽然方便,但如果你第25行错了就跟着一起错
给你看一下我的代码:
#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;
loan = total_price * ratio / 10;
down_payment = total_price * (10 - ratio) / 10;
mir = yir / 12.0;
ave_repay = loan * ((mir / 100.0) * pow(1.0 + (mir / 100.0), time * 12)) / (pow(1.0 + (mir / 100.0), time * 12) - 1.0);
total_repay = (time * 12) * ave_repay;
interest = total_repay - loan;
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);
return 0;
}
我编译起来没什么问题
页:
[1]