B33
练习:顺逆流、角度弧度、预测身高
引入
章前总览 继续练顺序结构:先列方程再写代码;注意整数除法与浮点保留位数。
三道练习:
- 顺逆流:a=(u+v)/2,b=(u-v)/2
- 角度→弧度:2πa/360
- 预测身高:男孩 (f+m)×0.54
1 练习1:顺流而下和逆流而上
已知顺流速度 u、逆流速度 v(u>v),求船速 a 与流速 b。
关系式
- a + b = u,a − b = v。
- 解得 a = (u+v)/2,b = (u−v)/2。
- 样例:7 5 → 6 1。
参考代码
#include <iostream>
using namespace std;
int main() {
int u, v;
cin >> u >> v;
int a = (u + v) / 2;
int b = (u - v) / 2;
cout << a << " " << b << endl;
return 0;
}
- 测试数据保证 a、b 均为整数。
2 练习2:角度和弧度的转换
弧度 = 2π × 角度 / 360,π 取 3.1415926。输入角度 a,输出弧度,保留 2 位小数。
参考代码
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int a;
cin >> a;
double r = 2 * 3.1415926 * a / 360;
cout << fixed << setprecision(2) << r << endl;
return 0;
}
- 样例:360 → 6.28;100 → 1.75。
- 一周 360° = 2π 弧度。
3 练习3:预测孩子身高
输入父母身高(厘米),输出预测的男孩、女孩身高,保留 1 位小数。
公式
- 男孩 = (父亲 + 母亲) × 1.08 / 2,可写成
(f+m)*0.54。 - 女孩 = (父亲 + 0.923 × 母亲) / 2。
- 样例:170 165 → 180.9 161.1。
参考代码
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double f, m; // 父母身高
double s, d; // 男孩、女孩
cin >> f >> m;
s = (f + m) * 0.54;
d = 0.5 * (f + 0.923 * m);
cout << fixed << setprecision(1) << s << " " << d << endl;
return 0;
}
小结
遇到“已知两个量求另两个量”,先写方程再翻译成代码。
列式 → 化简 → 顺序写出 cin / 计算 / cout
✓
里程碑达成:
下一节看一点计算机小知识:结构化设计与面向对象语言。