分数 15
全屏浏览题目
切换布局
作者 沈睿
单位 浙江大学
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
- 起步里程为3公里,起步费10元;
- 超起步里程后10公里内,每公里2元;
- 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
- 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
一信息:
首先,我们可以分析出租车计价的规则:
- 前3公里的费用是固定的,为10元。
- 3-13公里的费用是每公里2元。
- 超过13公里的部分,每公里是3元。
- 等待时间每5分钟收费2元。
二、分析
根据上述规则,我们可以分步骤来计算费用。
现在,我们来编写程序:
C语言:
#include <stdio.h>
int main() {
double distance;
int waitTime;
double fee = 0;
scanf("%lf %d", &distance, &waitTime);
// 起步价
if (distance <= 3) {
fee = 10;
} else if (distance <= 10) {
fee = 10 + (distance - 3) * 2;
} else {
fee = 10 + 7 * 2 + (distance - 10) * 3;
}
// 等待时间费用
fee += (waitTime / 5) * 2;
// 四舍五入
int result = (int)(fee + 0.5);
printf("%d\n", result);
return 0;
}
C++:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double distance;
int waitTime;
double fee = 0;
cin >> distance >> waitTime;
// 起步价
if (distance <= 3) {
fee = 10;
} else if (distance <= 10) {
fee = 10 + (distance - 3) * 2;
} else {
fee = 10 + 7 * 2 + (distance - 10) * 3;
}
// 等待时间费用
fee += (waitTime / 5) * 2;
// 四舍五入
int result = static_cast<int>(fee + 0.5);
cout << result << endl;
return 0;
}
总结:
从这道题中,我们能学到以下几点:
1. **问题分析和解构能力**: 问题给出了复杂的计价规则。要编写正确的代码,首先需要清晰地理解和分解这些规则。
2. **条件语句的使用**: 根据里程和等待时间计算费用涉及到多个条件,如何合理使用`if-else`语句来处理各种情况是本题的关键。
3. **数学四舍五入的实现**: 对于费用计算,需要进行四舍五入。通过加0.5然后取整的方式是一个常用的四舍五入方法,值得记住。
4. **简单的数学计算**: 本题涉及到基础的数学计算,如加减乘除,这些是编程中常见的操作,对这些基础运算要熟练掌握。
5. **变量的合理使用**: 根据需要合理地定义和使用变量,使得代码清晰、简洁并易于理解。
6. **编程细节的关注**: 例如,在C语言中,要注意使用`%lf`读取`double`类型的输入,而在输出时使用`%d`输出整数。
7. **代码测试**: 通过多个测试样例来确保代码的正确性,考虑各种可能的边界条件。
8. **时间和空间效率**: 虽然本题不需要特别高效的算法,但始终考虑时间和空间效率是一个好的编程习惯。
总的来说,这道题是一个基础的算法题目,主要考察编程基础和逻辑思维能力。通过这类题目,可以训练和加强这些能力。