7-5 出租车计价

分数 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

我的答案:

一信息:

首先,我们可以分析出租车计价的规则:

  1. 前3公里的费用是固定的,为10元。
  2. 3-13公里的费用是每公里2元。
  3. 超过13公里的部分,每公里是3元。
  4. 等待时间每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. **时间和空间效率**: 虽然本题不需要特别高效的算法,但始终考虑时间和空间效率是一个好的编程习惯。

总的来说,这道题是一个基础的算法题目,主要考察编程基础和逻辑思维能力。通过这类题目,可以训练和加强这些能力。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值