1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_zhe
Aya 敲可爱的~搬运于
2025-08-24 21:16:53,当前版本为作者最后更新于2024-12-13 22:43:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
欢迎报名洛谷网校,期待和大家一起进步!
本题考查分支结构。
对于读入的 ,我们首先判断 是否小于等于 。如果成立的话,则输出 。
接着再处理超重的部分。首先,要计算的是:要加收几次费用。例如: 克要加收 次超重费用,因为 ,(第一次计算超重),留下的 克用于第二次计算超重。
可以得出式子,扣除 克计算超重的次数是:。如果这个除法运算有余数(也就是会有剩余的不足 克的部分),那么次数 。
接下来,根据目的地区域编号计算加收费用。可以使用
switch语句或者if else结构。参考代码中采用的是if else结构。需要注意两点:- 不要抄错数字,确保每个区域的加收价格在程序中正确填写。
- 元的费用是基础费用,一定要加进答案中。
参考代码(部分):
if (w <= 500) cout << 20 << endl; else { int ex = (w - 500) / 500; //计算加收次数 if ((w - 500) % 500 != 0) //如果有剩余的不足 500 克的重量,则再额外加上 1 次 ex++; if (n == 1) cout << 20 + ex * 4 << endl; else if (n == 2) cout << 20 + ex * 6 << endl; else if (n == 3) cout << 20 + ex * 9 << endl; else if (n == 4) cout << 20 + ex * 10 << endl; else cout << 20 + ex * 17 << endl; }(易错问题) 思考:代码中的
if else结构改成下面的代码,为什么是错误的呢?if (n == 1) cout << 20 + ex * 4 << endl; if (n == 2) cout << 20 + ex * 6 << endl; if (n == 3) cout << 20 + ex * 9 << endl; if (n == 4) cout << 20 + ex * 10 << endl; else cout << 20 + ex * 17 << endl;答案:
else结构承接在if (n == 4)里,因此只要 不等于 ,就会进入else语句,输出多余的内容。
- 1
信息
- ID
- 11122
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者