转换成数学问题,也就是说。。。用几何来描述问题就是:一个直角三角形,高height=10km,由底边和斜边构成角度alpha,输入的角度alpha (5deg <= alpha <= 15deg),求底边长width。
我们知道直角三角形有一个关系:tan(alpha) = height / width。所以width = height / tan(alpha)。而从alpha的角度范围可知tan(alpha)不会是0,不会有除零问题。
然后c++的math.h里有提供tan函数。所以问题就简单了:
#include
#include
using namespace std;
// 求飞机以alpha角度起飞,到达1万米高空后,距离机场的水平距离,单位KM。
// 5度 <= alpha <= 15度
float horizonalDistanceKM(float alpha) {
static const float HEIGHT_KM = 10.0f; // 1万米高度相当于10KM
return HEIGHT_KM / tan(alpha);
}
int main() {
int alpha;
cin >> alpha;
if (alpha >= 5 && alpha <= 15) {
float distanceKM = horizonalDistanceKM((float)alpha);
printf("%.3fKM\n", distanceKM); // 保留三位小数并后缀KM
} else {
cout << "error" << endl;
}
return 0;
}