我正在爲C大學做這個任務,應該相當簡單,但其中的循環似乎不會終止,因此代碼將無法正常工作;即使我放入一個i值來限制它循環的次數。用for循環也試過了,還是卡住了。爲什麼循環不會終止,即使重複的'我'限制值?
該代碼應該考慮係數的值,並通過找到兩個大值之間的中點並試圖找出它是否爲0,如果不是,則嘗試找出三次方程的根,它應該將其中一個限制改爲中點值。這裏的相關代碼:
int main (void)
{
int i, u=1000, l=-1000;
float a, b, c, d, mid, y;
scanf(" %f %f %f %f", &a, &b, &c, &d);
while (abs(u - l) > 0.001 && i < 10)
{
mid= (u + l)/2;
y = a * pow(mid, 3) + b* pow(mid, 2) + c * mid + d;
if(y == 0) break;
else if(y < 0) l = mid;
else u = mid;
i++;
}
printf("\nThere is a root at: x = %.3f\n", mid);
}
任何幫助,將不勝感激,謝謝!
編輯:哦,我的上帝,我是個白癡。總是小事。該代碼仍然無法正常工作,但至少不會卡住,謝謝你們!
「i」的初始值是多少?因爲如果它等於-100000什麼的,需要很長時間才能達到10. – AntonH 2014-10-10 21:26:10
調試器可以幫助你找到這些東西。或者只是'printf(「%i \ n」,我);'在那裏,它會告訴你出了什麼問題。 – Almo 2014-10-10 21:28:37
如果答案對您有幫助,如果您選擇接受答案,我們將不勝感激。有關詳細信息,請參見[本頁](http://stackoverflow.com/help/someone-answers)。 – abelenky 2014-10-10 21:49:54