一、乘车费用(入营测试)

这篇博客记录了一位新手在解决乘车费用计算问题的过程,包括理解题目、分析思路和编写C++代码。问题涉及根据行驶距离和中途等待时间计算车费,车费计算涉及到分类讨论和数学逻辑。博主分享了可能的解决方案,并邀请读者提出错误和改进建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、乘车费用(c++)


事先说明:这个博客只是供我整理自己的思路。


题目:

    星期天上午小明乘出租车去本市的外婆家。
出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,
超过10公里之后在1.8元/公里的基础上加价50%;
另外,中途停车等候则按时间计费:1元/3分钟,(注:不满3分钟不计费)。
已知:小明到外婆家路程为n公里,中途停车等候时间总共m分钟,请计算小明到外婆家的出租车费是多少元?

输入输出格式

输入格式:
n m (n,m都是整数)

输出格式:
一个实数 (表示车费,保留1位小数)

输入输出样例

输入样例#1: 复制
8 7
输出样例#1: 复制
18.8


首先:

1. 读懂题目意思。

2.分析。

一个新手的思路:这怎么像数学题啊?(不就是分类讨论吗???)于是初中生拿出手中的笔,列出了这几条式子。
 第一种情况:2公里以内就是6元。(n<=2),[考虑m]。

 第二种情况:2公里以上,10公里及以下,(n-2)*1.8+6,(2<n<11),[考虑m]

 第三种情况:10公里以上。需要在1.8元/公里的基础上加价50%,其实就是乘以1.5。[考虑m]
           (n-10)*2.7+14.4+6,

解释:
2.7=1.8×1.5(我自己方便,代表着加价50%),(n-10)*2.7是只算10公里以上的路程的价格。

                 比如说,走21km,分两条式子,
                 这个式子算的是21-10=11(km),后面11km的价格,也就是要加价50%那部分的价格。

14.4+6是前面10公里的价格,仍要算进去。
也就是(21-10)*2.7+14.4+6。


还没结束!还有m这个条件!

另外,中途停车等候则按时间计费:1元/3分钟,(注:不满3分钟不计费)

我们可以用 m/3 整除来求出一共要加多少钱的停车费用。

如果m=7,那么要多交7/3=2(元)停车费用。         

ps:之前我傻傻的用while循环来求这个数(没救)。


代码:

1//by GAIN_HZ
include<bits/stdc++.h>
using namespace std;
int n,m;
double ans=6;//初始化为6,便于计算,下面的式子就不用加6了;
int main()
{  cin>>n>>m;
    ans+=m/3;   //停车费用,1元/3分钟,(注:不满3分钟不计费)
    if(n<=2)//第一种情况
     {printf("%.1f",ans);return 0;
     if(n<=10)//第二种情况
      {ans+=(n-2)*1.8;printf("%.1f",ans);return 0;}
      if(n>10)//第三种情况
       {ans+=(n-10)*2.7+14.4;printf("%.1f",ans);return 0;}
}
(2)
  //by GAIN_HZ
include<bits/stdc++.h>
using namespace std;
int n,m;
double ans=6;//初始化为6,便于计算,下面的式子就不用加6了;
int main()
{
    cin>>n>>m;
    ans+=m/3;//停车费用,1元/3分钟,(注:不满3分钟不计费)
    if(n<=2)//第一种情况
     {cout<<fixed<<setprecision(1)<<ans;return 0;}
     if(n<=10)//第二种情况
      {ans+=(n-2)*1.8;cout<<fixed<<setprecision(1)<<ans;return 0;}
      if(n>10)//第三种情况
       {ans+=(n-10)*2.7+14.4;cout<<fixed<<setprecision(1)<<ans;return 0;}
}
(1)和(2)差不多,都是我的程序,只有输出方式不同。
3)来自于我同学的程序,思路差不多。(感谢!)
//by XYczy
include<iostream>
include<stdio.h>
using namespace std;
long long n,m;
double ans=6; 
int main()
{
    cin>>n>>m;ans+=m/3;
    if(n>2&&n<=10)
    ans+=(n-2)*1.8;
    else if(n>10)
    ans+=(n-10)*1.8*1.5+14.4;
    printf("%.1f",ans);
    return 0;
} 

end

有错误或改进的可随时指出讨论,新手上路,多多担待。

当然可以。以下是个简单的Python代码片段,用于计算从个城市到另个城市的最小乘车费用。在这个例子中,我们假设城市之间的距离可以通过某种方式(例如,公共交通路线图)获得,并且每公里费用个固定的数字。 ```python def calculate_bus_cost(start_city, end_city, distance): # 假设每公里费用是固定的 cost_per_km = 2 # 总费用 = 距离(公里) * 每公里费用 total_cost = distance * cost_per_km # 如果起始城市和结束城市相同,则没有乘车费用 if start_city == end_city: return 0 return total_cost # 示例用法 start_city = "北京" end_city = "上海" distance = 1000 # 假设距离为1000公里 min_cost = calculate_bus_cost(start_city, end_city, distance) print(f"从{start_city}到{end_city}的最小乘车费用是{min_cost}") ``` 这段代码首先定义了个函数`calculate_bus_cost`,它接受起始城市、结束城市和距离作为输入,并返回从这两个城市之间的最小乘车费用。然后,我们使用示例数据调用这个函数,并打印结果。 请注意,这个代码只是个简单的示例,实际应用中可能需要考虑更多的因素,例如考虑不同的交通方式(如地铁、出租车等)、不同的路线选择、不同的时间段等等。此外,这段代码也没有考虑到可能存在的其他费用(如保险、过路费等)。在实际应用中,需要根据具体的需求和情况来编写更复杂的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值