问题描述:
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
-
起步里程为3公里,起步费10元;
-
超起步里程后10公里内,每公里2元;
-
超过起步里程10公里以上的部分加收50%的回空补贴费,即每公里3元;
-
营运过程中,因路阻及乘客要求临时停车等待的,按每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)