我正在编写的程序是用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。

09-30 17:01
查看更多