以下函数中的for循环似乎无法正确存储。返回range_angle
的值是第一个值,我知道这个值不正确。此外,我的compute_landing_distance
函数(此处未显示)工作正常,因此它必须是for循环中的内容:
for (theta_l_deg=22.5; theta_l_deg<=83;.01)
{
x_f = compute_landing_distance(v0,theta_l_deg);
if (x_f > range_distance)
{
range_distance = x_f;
range_angle = theta_l_deg;
}
else
{
break;
}
}
return range_angle;
我希望此循环以theta_l_deg
为增量从22.5
= 83
运行到.01
,并返回该范围内range_angle
的最大值。另外,我知道C只以弧度计算,compute_landing_distance
函数考虑了这一点。
答案 0 :(得分:4)
for (theta_l_deg=22.5; theta_l_deg<=83;.01)
应该是
for ( theta_l_deg = 22.5 ; theta_l_deg <= 83 ; theta_l_deg += 0.01 )
在原始代码中,您没有增加theta_l_deg
答案 1 :(得分:4)
for (theta_l_deg=22.5; theta_l_deg<=83; theta_l_deg+=0.01)
{
x_f = compute_landing_distance(v0,theta_l_deg);
if (x_f > range_distance)
{
range_distance = x_f;
range_angle = theta_l_deg;
}
else
{
break;
}
}
return range_angle;
答案 2 :(得分:3)
循环错误,缺少增量
for (theta_l_deg=22.5; theta_l_deg<=83;.01)
应该是
for (theta_l_deg=22.5; theta_l_deg<=83; theta_l_deg += .01)
阅读http://floating-point-gui.de/并注意0.01
不可以完全代表IEEE754
顺便说一句,如果使用GCC,您应该使用所有警告和调试信息进行编译:{{1}}。