c语言中二分法100中找30,c语言中的二分法
\\\題外:對于printf引號中的內(nèi)容一定要細心書寫 ; 數(shù)組由a[0]開始計數(shù),切記;尤其是與for循環(huán)中i=1 搞混
運用a[i+1]等超前數(shù)據(jù)時 需先用
for(i=0;i<=n-1;i++)
{scanf("%d",&a[i]);}
給數(shù)組全部賦值
題目:對于方程 8*x^4+7*x^3+2*x^2+3*x+6=Y 給定一個實數(shù)Y(|Y|<=1000000000),求方程的解 x=k,其中0<=k<=100,若方程無解,則輸出“No solution!”(不含引號)若方程存在一個解 x=k 滿足 0<=k<=100,則輸出“x = k”(不含引號,k 為方程的解,精確 到小數(shù)點后 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; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/ /對題目分析可得,函數(shù)在0到100必是增函數(shù)
R=100;
for(;1;) ? ///相當(dāng)于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位數(shù)越多,結(jié)果越精確
}
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;
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的c语言中二分法100中找30,c语言中的二分法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a jquery 标签点击不跳转_for
- 下一篇: java查询数据库的方式_Java连接各