么一奥 2021-10-28 20:13 采纳率: 83.3%
浏览 60

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

【问题描述】重庆市普通出租车收费标准如下:起步里程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;
}

  • 写回答

1条回答 默认 最新

  • 星星不再亮 2021-10-29 16:15
    关注

    你的判断有点乱 你可以参考下我的 最后的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;
    }

    评论

报告相同问题?

问题事件

  • 创建了问题 10月28日

悬赏问题

  • ¥15 delphi开发的WEBSERVER改用HTTPS协议
  • ¥15 pic16f877A单片机的计数器proteus仿真失效
  • ¥100 调查 Vitis AI 中验证 .xmodel 量化后的正确性
  • ¥30 codelite全屏时file、setting那一行消失了
  • ¥15 gazebo-rviz教程
  • ¥15 付费求做一个自助抢单插件
  • ¥15 bat批处理,关于数据复制问题
  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?