test 出租车计价

问题描述:

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  1. 起步里程为3公里,起步费10元;

  2. 超起步里程后10公里内,每公里2元;

  3. 超过起步里程10公里以上的部分加收50%的回空补贴费,即每公里3元;

  4. 营运过程中,因路阻及乘客要求临时停车等待的,按每5分钟2元计收(不足5分钟则不收费)。

提示:

里程不足1公里,按照1公里计,如4.3公里按照5公里计;等待时间超过5分钟后,不足按5分钟计,如12分钟按照6元收停车等待费。因此需要对里程和时间进行处理。

输入格式:

输入在第一行中给出输入行驶里程(单位为公里,精确到小数点后1位)

在第二行中给出等待时间(整数,单位为分钟)

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

方法一

#include <stdio.h>
#include <math.h>
int main()
{
	double d = 0.0;
	int t = 0;
	int t_fee = 0;
	double d_fee = 0.0;

	scanf("%lf", &d);
	scanf("%d", &t);

	if (t < 5)
	{
		t_fee = 0;
	}
	else
	{
		if (t % 5 != 0)
		{
			t_fee = 2 * (t / 5 + 1);
		}
		else
		{
			t_fee = 2 * (t / 5 );
		}
	}

	if (d <= 3)
	{
		d_fee = 10.0;
	}
	else if (d > 3 && d <= 10)
	{
		d_fee = 10 + ceil(d - 3) * 2.0;
	}
	else
	{
		d_fee = 30 + ceil(d - 13) * 3.0;
	}
	double fee = 0;
	fee = t_fee + d_fee;
	printf("%d\n", (int)fee );
	return 0;
}

方法二

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	double mileage, base_mileage = 3.0;  
    int waiting_time, base_waiting_time = 5;  
    double fare1 = 0.0;  
    double fare2 = 0.0; 
    scanf("%lf", &mileage);  
    scanf("%d", &waiting_time);  
    if (mileage <= base_mileage) {  
        fare1 = 10.0;  
    } 
	else if(3<mileage<=10){  
        fare1 = 10.0 + (mileage - base_mileage) * 2.0;  
    }  
    else
    	fare1 = 30 + (mileage - 13)*3;
    if (waiting_time >0) {  
        fare2 = (int)((waiting_time  / 5 )+1)* 2.0;  
    }  
    double fare = fare1 + fare2;
    printf("%.0f元\n", (int)(fare + 0.5));
	return 0;
}

PS:
1、#include <math.h>
向上取整函数:ceil(),向下取整函数floor()
2、四舍五入:(int)(fare+0.5)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

营养快线好喝~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值