为什么这不起作用? C中的程序

时间:2014-10-17 19:27:50

标签: c

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

2 个答案:

答案 0 :(得分:4)

问题(虽然你实际上从未告诉过我们“工作不正常”的意思)可能是你要将用户输入分配给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中替换为{<1}}。

答案 1 :(得分:0)

首先,您的pow函数不知道要调用哪个实例。 MuzzleVelocity应该是double,float或long double。你可以放 pow float((MuzzleVelocity),2)。

其次,你没有给范围任何值,你用它来计算角度。我猜你犯了这个错误,想要以米为单位作为输入,而不是米。如果我是正确的,你应该改变scanf(“%f”,&amp;米); to scanf(“%f”,&amp; range);

希望