测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B32

案例:BMI、摄氏转华氏、分苹果

引入

章前总览 三道题都是典型顺序结构:先输入,再按公式算,最后输出。体会“步骤清晰 = 好算法”。

三道案例:

  • BMI:t = w/(h*h),保留 2 位
  • 温度:F = 1.8*C + 32
  • 分苹果:答案 n/m + 1(抽屉原理)

1 案例1:体质指数 BMI

输入体重 w(kg)和身高 h(m),计算 t = w/(h²),保留 2 位小数。

步骤(顺序结构)

  • 输入体重和身高 → 求 t → 输出 t。
  • 样例:70 1.72 → 23.66。

</> 参考代码

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double w, h, t;
    cin >> w >> h;
    t = w / (h * h);
    cout << fixed << setprecision(2) << t << endl;
    return 0;
}
  • 分母写成 h*h,不要漏括号。

2 案例2:摄氏温度转华氏温度

公式:F = 1.8 × C + 32。输入摄氏 C(范围 [−20, 100]),输出华氏,保留 2 位。

</> 参考代码

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double c, f;
    cin >> c;
    f = 1.8 * c + 32;
    cout << fixed << setprecision(2) << f << endl;
    return 0;
}
  • 样例:37.2 → 98.96。
  • 室温、体温日常说的“度”,一般指摄氏度。

3 案例3:分苹果

n 个苹果分给 m 个人(n 不是 m 的倍数),分得最多的人至少分到几个?

抽屉原理思路

  • 先每人平均 n/m 个,还剩 n%m 个。
  • 把剩余的再每人至多再分 1 个,则“最多的人”至少拿到 n/m+1
  • 样例:20 个分 3 人 → 7。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    cout << n / m + 1 << endl;
    return 0;
}
  • 题目保证 n 不是 m 的倍数,所以答案就是整数商再加 1。
小结

顺序结构做题模板:

读入 → 按公式计算 → 按规定格式输出
里程碑达成:

下一节练习:顺逆流速度、角度转弧度、预测身高。