B4073 [NOIP-X2018 山东] 快递费用
欢迎报名洛谷网校,期待和大家一起进步!
本题考查分支结构。
对于读入的
接着再处理超重的部分。首先,要计算的是:要加收几次费用。例如:
可以得出式子,扣除
接下来,根据目的地区域编号计算加收费用。可以使用 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 语句,输出多余的内容。