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章基础知识自测(含完整代码题)。