gpt4 book ai didi

c - 即使重复次数限制值为 'i',循环也不会终止,有什么原因吗?

转载 作者:行者123 更新时间:2023-11-30 15:29:19 25 4
gpt4 key购买 nike

我正在用 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 ,但没有初始化它,因此它被设置为内存中留下的任何随机值。

对于此示例,假设值为 -12,345 .

然后i在大于 10 之前可以增加超过 12,000 倍!当 i 增加 12,355 倍并且其值变为 10 时,您的循环将运行,并且测试 i < 10最终失败了。

要解决此问题,请初始化 i = 0 :

int i=0;

关于c - 即使重复次数限制值为 'i',循环也不会终止,有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26308246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com