当前位置:   article > 正文

C语言典型例题30

C语言典型例题30

《C程序设计教程(第四版)——谭浩强》


习题2.7 从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少个月能还清。
设d=30000元,p=6000元,r=1%。对求得的月份取小数点后一位,对第二位按四舍五入处理

提示:设环球的月数为m,则m=[logp-log(p-d*r)]/log(1+r)=log(p/(p-d*r))/log(1+r),log(p)表示以10为底p的对数



代码:

  1. //《C程序设计教程(第四版)——谭浩强》
  2. //习题2.7 从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少个月能还清。
  3. //设d=30000元,p=6000元,r=1%。对求得的月份取小数点后一位,对第二位按四舍五入处理
  4. //提示:设环球的月数为m,则m=[logp-log(p-d*r)]/log(1+r)=log(p/(p-d*r))/log(1+r),log(p)表示以10为底p的对数
  5. #include <stdio.h>
  6. #include <math.h>
  7. int main()
  8. {
  9. float d;//贷款数
  10. float p;//每月还款数
  11. float r;//月利率
  12. float m;//【计算】:还钱的月数
  13. printf("请输入贷款总数:\n");
  14. scanf("%f",&d);
  15. printf("请输入每月还款额:\n");
  16. scanf("%f",&p);
  17. printf("请输入月利率:\n");
  18. scanf("%f",&r);
  19. // 检查输入的合理性(月份不能为负数)
  20. if (p <= d * r)
  21. {
  22. printf("每月还款额必须大于贷款利息!\n");
  23. return 1; // 返回错误代码
  24. }
  25. m=log10(p/(p-d*r))/log10(1+r);
  26. printf("还需要%.1f才可以还清\n",round(m*10)/10);//四舍五入的实现
  27. return 0;
  28. }

运行结果:


代码运行过程中遇到的问题:

(1)在C语言中,‌要计算以10为底的对数,‌需要使用log10()函数,‌而不是log()函数。‌

log10()函数是C标准库中的一个函数,‌用于计算以10为底的对数。‌

这个函数的原型是double log10(double x),‌它返回参数x以10为底的对数值。‌

在使用这个函数之前,‌需要包含math.h头文件,‌因为log10()函数定义在这个头文件中。‌

注释:log()函数是用于计算以e为底的对数

怎么使用log10函数?

下面是一个简单的示例代码,‌展示了如何使用log10()函数来计算一个数的以10为底的对数:‌

#include <stdio.h>
#include <math.h> 
int main() 
{
    double num = 100.0; // 可以替换为任何正数
    double logValue = log10(num); 
    printf("The log10 of %f is %f\n", num, logValue); 
    return 0; 
}

(2)怎么实现四舍五入?

在C语言中,round函数用于将一个浮点数四舍五入到最近的整数。这在处理需要按照特定小数位(如一位小数)的结果时非常有用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/1008699
推荐阅读
相关标签
  

闽ICP备14008679号