本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
- 起步里程为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
如下,这是我试的密码,lc1和lc2是把里程数给分成两部分,主要为了四舍五入。因为发现如果用离散型连if判断都会出现问题。
#include<stdio.h>
int main()
{
int shijian,lc1,lc2,money,mi;
double lichen;
scanf("%lf %d",&lichen,&shijian);
lc1 = lichen;//里程数的整数部分
lc2 = (int)(lichen*10) - lc1*10;//里程数的一位小数
//里程数小于等于3公里
if((lc1<=3&&lc2==0)||(lc1<=2&&lc2!=0)){
money = 10;
//里程数大于3小于等于13公里,2元路段
}else if((lc1<=13&&lc2==0)||(lc1<=12&&lc2!=0)){
money = 10 + (lc1-3)*2;
mi = lc2*2;
if(mi>14){
money += 2;
}else if(mi>8){
money += 1;
}
//里程数大于13公里,计算回返
}else if((lc1>=13)){
money = 30 + (lc1-13)*3;
mi = lc2*3;
//小数位收费
if(mi>=25){
money += 3;
}else if(mi>=15){
money += 2;
}else if(mi>=5){
money += 1;
}
}//0 3 6 9 12 15 18 21 24 27
//计算时间收费
if(shijian>=5){
money += shijian/5*2;
}
printf("%d\n",money);
return 0;
}
这个代码直接输入值的话样例1和样例2可以正确输出,但样例3还是不对,提交上去后,如图
总的来说现在让我疑惑的就是样例3,也就是最后一张图显示的X>10公里时代码该怎么写。