我要飞=_= 2021-11-30 23:27 采纳率: 70.6%
浏览 41
已结题

C语言编程代码的问题

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

  • 起步里程为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还是不对,提交上去后,如图

img

总的来说现在让我疑惑的就是样例3,也就是最后一张图显示的X>10公里时代码该怎么写。

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 11月30日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度