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

练习:购物、时间差、3 的倍数

引入

章前总览 继续用整数除法:两种商品各买同样多件;两个时刻相差几分钟;1~n 有多少个 3 的倍数。

三道练习:

  • 购物:n/(a+b),括号不能少
  • 时间:分钟差 = 小时差*60 + 分钟差
  • 倍数:答案就是 n/3

1 练习1:小杨购物

有 n 元,A 单价 a、B 单价 b,要买相同数量,最多各买几件?

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int n, a, b;
    cin >> n >> a >> b;
    cout << n / (a + b) << "\n";
    return 0;
}
  • 答案是 n/(a+b):一对 A+B 的花费是 a+b。
  • 样例:12,4,1 → 2;13,4,1 → 4。

2 练习2:时间规划

同一天内,开始 h1:m1 到结束 h2:m2,相差多少分钟?

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int h1, m1, h2, m2;
    cin >> h1 >> m1;
    cin >> h2 >> m2;
    cout << (h2 - h1) * 60 + (m2 - m1);
    return 0;
}
  • 即使 m2-m1 为负,从小时差里“借位”,结果仍然正确。

3 练习3:1~n 有多少个 3 的倍数

每 3 个数里大约有 1 个是 3 的倍数,答案就是整数除法 n/3

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << n / 3 << endl;
    return 0;
}
  • 样例:100 → 33;300 → 100。
小结

“最多能买几份 / 有多少个倍数”,第一反应往往是整数除法。

份数 = 总量 / 每份大小
零头 = 总量 % 每份大小
里程碑达成:

下一节做第4章基础知识自测(含完整代码题)。