/* 小明在攒够房子的首付款后 一次性地向银行贷款借了a元钱,并约定分b个月还清。 如果银行要求每月还贷c元钱,请问月利率x是多少(按照复利计息法计算)? 提示:按照复利计息法,第一个

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//float dichotomy(float);
//int isans(float n, float x,float c,int b);//分号.
/*
fabs和abs;
功能不同:
fabs函数功能为:求浮点数x的绝对值。ABS函数的功能为求整数的绝对值。
4、引用的头文件不同:
abs函数引用的头文件:stdlib.h,fabs函数引用的头文件为math.h。
*/
float still_owe(float x, float n, float a, int b, float c);//欲求出欠款n关于利息x的函数,参数较多,因为需要借助迭代
int main()
{
/* 定义了不少变量,务必在运行之前检查下类型
包括自定义的函数原型(定义和声明中)的参数变量类型*/
float a = 0, x = 0;
float c = 0;/* 每个月的还款数额 */
int b;//分b个月来还
float n = 0;/* still_owe_money */
/* 二分法左边界 */
float left = 0.000000;
float right = 1.000000;//
float value_left = 0, value_right = 0, value_mid = 0;
int i;/* 循环变量 */
// x = (left + right)/2.0;/* 最终的x将会是某个足够小的二分区间中间值mid
// x是需要被迭代的,应该放在某个循环中去. */
//printf("test_new_2\n");
scanf("%f%d%f", &a, &b, &c);
n = a;
value_left = still_owe(left, n, a, b, c);
value_right = still_owe(right, n, a, b, c);
x = (left + right) / 2.0;
value_mid = still_owe(x, n, a, b, c);
for (; fabs(value_right - value_left) > 0.0001; x = (left + right) / 2.0)
{
/* 函数值赋值,这些值也需要及时迭代 */
value_left = still_owe(left, n, a, b, c);
value_right = still_owe(right, n, a, b, c);
//x = (left + right) / 2.0;
value_mid = still_owe(x, n, a, b, c);
// if(abs(value_right - value_left)<0.000001)/* 精度交给区间边界值 */
// printf("%.6f",x);
// else
/* 精度不满足要求.需要调整区间边界,提高精度 */
/* 调整之前,还需要求函数值(中间变量的函数值): value_mid = still_owe(x,n,a,b,c);
对函数值进行判断(零点存在性定理) */
/* 若,零点在原区间左半边 */
if (value_left * value_mid <= 0)
right = x;//迭代边界值
/* 若零点在有半边 */
else
{
left = x;
}
//printf("working\n");
}
printf("%.3f%%\n", x * 100);//%.nf可以自动四舍五入
return 0;
}
float still_owe(float x, float n, float a, int b, float c)
{
n = a;
for (int i = 0; i<b; i++)
{
n = n*(1 + x) - c;
}
return n;
}
posted @   xuchaoxin1375  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-03-08 windows上命令行@文件内容查看方案@行号显示@nlps@cat -n
点击右上角即可分享
微信分享提示