大家好,我正在努力解决这个问题
编写一个 C 程序,计算弹丸在撞击地面之前行进的距离(即射程)、弹丸撞击地面所需的时间以及弹丸飞行中的最大高度(给定角度)它被射向空中,以及发射时的初始速度(速度)。我们假设地面是平坦的,唯一存在的力是重力(没有空气阻力等)。
Maximum height: h=pow(v*sin(θ),2)/2*g;
Time in air: t = (2*v*sin(θ))/g;
Range: r = (2*pow(v,2)*sin(θ)*cos(θ))/g;
θ = angle that the projectile is launched (in whole degrees)
v = initial velocity of the projectile (in meters/second)
g = acceleration due to gravity = 9.8 meters/second2
现在我不知道为什么我得到负面结果。我想我使用了错误的声明语法,或者我对角度和初始速度给出了错误的输入,或者是因为除法是四舍五入的。有人可以帮我找出解决这个问题的正确方法吗? (我是 C 编程新手,我想学习)
最佳答案
正确的公式如下
Maximum height: h=pow(v*sin(θ*M_PI/180),2)/(2*g);
Time in air: t = (2*v*sin(θ*M_PI/180))/g;
Range: r = (2*pow(v,2)*sin(θ*M_PI/180)*cos(θ*M_PI/180))/g;
您甚至可以将 Range 公式简化为 pow(v,2)*sin(2*θ*M_PI/180)/g
as sin(2θ) = 2*sin(θ)*cos(θ)
来自 @Mat、@BLUEPIXY 和 @Sanhadrin 的评论
关于C编程: wrong output?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26440710/