我正在编写的程序是用C语言编写的。应该让用户输入一个距离,然后计算以设定的速度射击弹丸才能达到所述距离的角度:
#include <stdio.h>
#include <math.h>
#define MuzzleVelocity 1000
#define PI (3.141592653589793)
int main (int argc, const char * argv[]) {
float G, meters, tf, angle, range;
G = 9.8; /* M/sec^2 */
printf("Enter the range of Enemy Sub in Meters>");
scanf("%f", &meters);
printf("\nTo hit the sub at %f meters", meters);
angle = (180/PI)* .5* asin(range / ((pow(MuzzleVelocity, 2))/G));
printf ("\n Use the angle %f degrees", angle);
return 0;
}
如果有人也可以解释以int main开头的行,那将非常有帮助,我主要是从上一个问题开始编辑开头,并替换了我认为需要输入的变量。正确的输出应为:
Enter the range of Enemy sub in Meters> XXX.XX
To hit the sub at XXX.XX meters
Use the angle XX.XX
最佳答案
该问题(尽管您从未真正告诉我们“不起作用”是什么意思)很可能是您将用户输入分配给了meters
:
printf("Enter the range of Enemy Sub in Meters>");
scanf("%f", &meters);
但是,然后在公式中使用
range
的值,该值尚未设置为任何值,因此其中将具有完全随机的值:angle = (180/PI)* .5* asin(range / ((pow(MuzzleVelocity, 2))/G));
将等式中的
range
替换为meters
,或者将scanf
替换为vise。