解题思路:
二分法求解近似值
注意事项:
参考代码:
#include<stdio.h>
double cf[30];
int main()
{
int i,j,n;
double s,f,x,l,r,m;
while(scanf("%d",&n)!=EOF)
{
if(n==0) //当输入值为0时退出循环运算
break;
scanf("%lf",&x);
for(i=0;i<n;i++)
scanf("%lf",&cf[i]);
l=-1.0; //设置左区间
r=1e6; //设置右区间
for(i=0;i<100;i++)
{
s=0;
f=1.0;
m=(l+r)/2; //取中间值
for(j=0;j<n;j++)
{
f=f/(1+m);
s=s+cf[j]*f;
}
if(s>(-x))
l=m; //近似值可能落入右区间
else
r=m; //近似值可能落入左区间
}
printf("%.2lf\n",m);
}
return 0;
}
0.0分
0 人评分