7-1 烟囱的高度 分数 8 全屏浏览题目 切换布局 作者 李祥 单位 湖北经济学院 已知人离烟囱的距离为 a,人的眼睛离地高度为 b,人看烟囱顶时的仰角为 θ,求烟囱的高度 h。 输入格式 a b θ 注:a、b 的单位为米,均为小数。仰角 θ 的单位为角度,包括度、分和秒数,其中度、分为整数,秒数为小数。 输出格式 h 注:h 的单位为米。 要求:输出2位小数,末位四舍五入。用C语言编写程序
时间: 2023-06-26 13:05:25 浏览: 557
思路:
根据三角函数的知识,可以得到以下公式:
$$\tan{\theta}=\frac{h}{a}$$
即:
$$h=a\tan{\theta}$$
因此,只需要输入 $a$、$b$ 和 $\theta$,就可以通过上述公式计算出烟囱的高度 $h$。
代码实现:
```c
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, theta, h;
scanf("%lf %lf %lf", &a, &b, &theta); // 输入 a、b 和 θ
theta = theta * M_PI / 180; // 将角度转换为弧度
h = a * tan(theta); // 计算烟囱的高度
h = round(h * 100) / 100; // 四舍五入保留两位小数
printf("%.2lf\n", h); // 输出结果
return 0;
}
```
注意事项:
1. 需要将输入的角度转换为弧度,才能使用 C 语言中的三角函数库函数。
2. 在输出结果时,需要保留两位小数,并进行四舍五入。可以使用 `round` 函数实现四舍五入。
相关问题
7-1 烟囱的高度 分数 8 全屏浏览题目 切换布局 作者 李祥 单位 湖北经济学院 已知人离烟囱的距离为 a,人的眼睛离地高度为 b,人看烟囱顶时的仰角为 θ,求烟囱的高度 h。 输入格式 a b θ 注:a、b 的单位为米,均为小数。仰角 θ 的单位为角度,包括度、分和秒数,其中度、分为整数,秒数为小数。 输出格式 h 注:h 的单位为米。 要求:输出2位小数,末位四舍五入。
题目描述
已知人离烟囱的距离为 $a$,人的眼睛离地高度为 $b$,人看烟囱顶时的仰角为 $\theta$,求烟囱的高度 $h$。
输入格式
$a\ b\ \theta$
输出格式
$h$
数据范围
$a,b,h,\theta \in [0,100]$
输入样例
10.0 1.0 30
输出样例
14.64
算法1
(三角函数) $O(1)$
根据三角函数中的正切函数可知:
$$\tan \theta = \frac{h}{a}$$
因此,
$$h = a \tan \theta$$
题目中给出的是仰角,而正切函数需要的是俯角,因此需要将仰角转换为俯角。俯角为 $90^\circ - \theta$,因此有:
$$\tan (90^\circ - \theta) = \cot \theta = \frac{b}{a}$$
因此,代入原式得:
$$h = a \tan \theta = a \frac{\tan \theta}{\cot \theta} = \frac{a}{\frac{b}{a}} = \frac{a^2}{b}$$
C++ 代码
时间复杂度
$O(1)$
算法2
(勾股定理) $O(1)$
根据勾股定理可知:
$$h = \sqrt{(a^2 + b^2) - 2ab \cos \theta}$$
因此,代入原式得:
$$h = \sqrt{a^2 + b^2 - 2ab \cos \theta}$$
C++ 代码
时间复杂度
$O(1)$
乘法口诀表分数 10 全屏浏览 切换布局 作者 李祥 单位 湖北经济学院 请编写程序,输出 n×n 的乘法口诀表。 输入格式 n 输出格式 n×n 的乘法口诀表。
乘法口诀表是指一系列数字乘法的结果,通常用于帮助记忆基本的乘法运算。为了编写一个程序来生成 \( n \times n \) 的乘法口诀表,我们可以使用嵌套循环遍历从1到n的所有数对,并将它们相乘。然后将结果按照表格的形式输出。
以下是一个简单的C++程序,用来打印10x10的乘法口诀表:
```cpp
#include <iostream>
using namespace std;
void printMultiplicationTable(int n) {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
cout << i << " * " << j << " = " << i * j << "\t";
}
cout << endl;
}
}
int main() {
int n = 10;
printMultiplicationTable(n);
return 0;
}
```
在这个程序中,
1. `printMultiplicationTable` 函数接受一个整数参数 `n`,表示乘法口诀表的大小。
2. 内部的两个for循环分别遍历行(`i`)和列(`j`),计算每个位置的乘积并输出。
3. 表达式 `cout << i << " * " << j << " = " << i * j << "\t";` 打印当前的乘法表达式及其结果。
4. 当内层循环完成后,换行符 `\n` 让下一行开始。
5. 主函数 `main` 中调用 `printMultiplicationTable` 并传递给定的 `n` 值。
运行这个程序,它会打印出10x10的乘法口诀表。如果你需要其他大小的乘法口诀表,只需改变 `n` 的值即可。
阅读全文