我正在编写的程序在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
答案 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);
希望