难度参考
难度:简单
分类:分支控制
难度与分类参考题目来源网站。
题目
链接:牛牛的快递__牛客网 (nowcoder.com)
来源:牛牛的快递__牛客网 (nowcoder.com)
牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费
输入描述:
第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。
输出描述:
输出牛牛总共要支付的快递费用
示例1
输入
1.5 y
输出
26
示例2
输入
0.7 n
输出
20
思路
要解决这个问题,我们需要编写一个程序来接受用户的输入,根据输入的重量和是否加急的标志,计算出快递费用。我们需要考虑以下几个步骤:
1.输入处理: 读取一个浮点数和一个字符,分别代表快递的重量和是否加急。
2.基础费用计算: 快递的基础费用为20元,对应于1kg以内的费用。
3.超重费用计算: 如果重量超过1kg,每超出1kg收取1元,不足1kg按1kg计算。可以通过向上取整超过1kg的重量来计算额外费用。
4.加急服务: 如果选择加急服务(输入为 'y'),则在总费用上加五元。
5.输出计算结果: 最后将计算出的总费用输出。
示例
示例1:
输入: 牛牛寄的包裹重量是1.5kg,他选择了加急服务。
计算:
起步价: 20元覆盖1kg。
超重费用: 1.5kg - 1kg = 0.5kg,向上取整,计1kg,因此额外1元。
加急服务: 5元。
输出: 总费用是20元(起步价)+ 1元(超重费用)+ 5元(加急服务)= 26元。
示例 2:
输入: 牛牛寄的包裹重量是0.7kg,他没有选择加急服务。
计算:
起步价: 20元覆盖1kg。
超重费用: 0.7kg没有超过1kg,不需要额外费用。
加急服务: 没有选择加急,不需要额外费用。
输出: 总费用是20元(起步价),因为没有超重也没有加急服务。
梳理
首先,程序通过 cin 接收用户输入的快递重量和是否加急的信息,这两个信息分别被存储在 weight 和 urgent 变量中。程序初始化一个名为 cost 的变量,其值被设置为20元,这代表快递服务的起步价,涵盖了重量在1kg以内的快递费用。
接下来,程序检查快递重量是否超过1kg。如果超过,程序需要计算超出部分的费用。这里用到了 <cmath> 头文件中的 ceil 函数,它的作用是将重量超出的部分向上取整到最近的整数,因为快递公司通常会按照完整的公斤数来收费。计算出的额外费用随后被加到起步价上。
此外,程序还需要检查用户是否选择了加急服务。如果用户输入的 urgent 变量为 'y',表明快递需要加急,这时程序会在总费用上再加上5元的加急费用。
最后,程序通过 cout 输出最终的费用。通过这些有序的计算步骤和条件判断,这个简单的快递费用计算器就能根据用户的需求输出正确的费用总额。
代码
#include <iostream>
#include <cmath> // 包含 ceil 函数,用于向上取整
using namespace std;
int main() {
float weight;
char urgent;
cin >> weight >> urgent;
// 起步价
int cost = 20;
// 计算超出部分的重量
if (weight > 1) {
// 向上取整超出的重量,并计算额外费用
cost += ceil(weight - 1);
}
// 如果加急,额外加五元
if (urgent == 'y') {
cost += 5;
}
// 输出总费用
cout << cost << endl;
return 0;
}