这个怎么做呀!不知道哪里错了呀

【问题描述】重庆市普通出租车收费标准如下:起步里程3公里,起步费10元;超起步里程后每公里租费1.8元,每0.5公里计费1次(不足0.5公里的不收费)。营运过程中,如果因路阻及乘客要求临时停车的,每5分钟按0.5公里租费计收(不足5分钟的不收费)。编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。

提示:出租车按路程计费时,3.0公里第一次计费,3.5公里第二次计费,4.0公里第三次计费,以此类推。

【输入形式】两个数(第1个表示里程,单位公里;第2个表示等待时间,单位分钟),中间用空格分隔
【输出形式】一个数(表示应支付的车费,单位元)(保留2位小数)
【样例输入】5.5 6.8
【样例输出】17.20

#include<stdio.h>
#define A (int)(b/5)
#define B (int)((a-3)/0.5)
int main(void)
{ float a,b,c,d=0;

scanf("%f %f",&a,&b);

if(a<=0)
printf("%f",d);
if(a>0)
{ if(b>=0 && b<5 && a<=3)
c=10;
if(a<=3 && b>=5)
{ if(b>5)
c=10+(A+1)0.9;
else
c=10+A
0.9;
}
if(a>3 && b<5 && b>=0)
c=10+(B+1)*0.9;
if(a>3 && b>=5)
{ if(b>5)
c=10+(A+1)*0.9+(B+1)0.9;
else
c=10+A
0.9+(B+1)*0.9;
}

}
printf("%.2f",c);

return 0;
}

你的判断有点乱 你可以参考下我的 最后的int是因为不足0.5的部分和不足5的部分直接省略,不然会影响结果,比如6.8分钟,计算应该时2,但是float型的结果是2.12,有误差。
但是我不太清楚为什么要除以0.5或者5之后加1,我是看你加的,可以说一下嘛

#include<stdio.h>

int main(void)
{
float a,b,d=0;
scanf("%f %f",&a,&b);
if(a>0)
{
if(a<=3)
d = 10+(int)(b/5+1)*1.8/2;
else
d = (int)((a-3)/0.5+1)*1.8/2+(int)(b/5+1)*1.8/2 + 10;
}
printf("%.2f\n",d);
return 0;
}