c语言中二分法100中找30,c语言中的二分法

\\\题外:对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数,切记;尤其是与for循环中i=1 搞混

运用a[i+1]等超前数据时 需先用

for(i=0;i<=n-1;i++)

{scanf("%d",&a[i]);}

给数组全部赋值

题目:对于方程 8*x^4+7*x^3+2*x^2+3*x+6=Y 给定一个实数Y(|Y|<=1000000000),求方程的解 x=k,其中0<=k<=100,若方程无解,则输出“No solution!”(不含引号)若方程存在一个解 x=k 满足 0<=k<=100,则输出“x = k”(不含引号,k 为方程的解,精确 到小数点后 4 位) 否则,输出“No solution!”(不含引号)

程序:

#include

#include

int main()

{

double x,L,R,mid,k,m;

int y,i;

scanf("%d",&y);

m=0;

x=0;

k=0;

L=0;                                  / /对题目分析可得,函数在0到100必是增函数

R=100;

for(;1;)   ///相当于while(1)   即判断条件无限为真

{ mid=(L+R)/2;

if(8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6

L=mid;  ///如果有解 则y必大于f(0) 必小于f(100)  故如果y>f(mid)则  x位于mid 与100之间

}

else {

R=mid;

}

if((R-L)<0.0000000001)break;       ///0.00000001位数越多,结果越精确

}

m=8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6;

k=fabs(y-m);   //两者误差

if(k>0.01){    //就算两x不等于 其y值误差最多0.00001

printf("No solution!");

}

else{

printf("x = %.4lf",mid);

}

return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值