出租车计价的C语言实现

一道写的快但排查了很久错误的题目......记录一下:

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

输入格式:共一行,包括行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔

输出格式:在一行中输出乘客应支付的车费(单位为元),结果四舍五入保留整数。

示例:
输入:40.0 7
输出: 116

#include <stdio.h>
//出租车计价
int main() {
    int t;
    double k, money;
    scanf("%lf %d", &k, &t);
    if (k <= 3) {
        money = 10;
    } else if (k <= 10) {
        money = 10 + 2 * (k - 3);
    } else {
        money = 10 + 2 * 7 + 3 * (k - 10);
    }
//    if(t/5 >0)//可以加但没用,且排查了好久错误才发现错写成t%5了...
        money = money + t / 5 * 2;

//    double money=6.78;//测试%.0lf是四舍五入的
//    printf("%d\n", (int)(money+0.5));
    printf("%.0lf\n", money);
    return 0;
}

个人的易错点:

1. if语句第一个分支写成了k <= 10 ;好在浏览了几遍代码后立刻就发现了,写错的原因可能是看到车费10元顺手打上去了

2. 输入的数据类型要与定义的相匹配,scanf 中对应的数据类型容易未经思考写成%d类型,实际上定义的是double类型,第一步出错导致测试完全不对

3. 无意义的代码,如本题代码中注释掉的一句,不写是对的且简洁,写了有可能出错

4. 本题涉及到数据的四舍五入,可以用①+0.5并强制类型转换;或者②采取%.0lf 的输出格式自动保留四舍五入

最后,遇到bug的处理步骤,直到得到想要的结果:

先看有没有手误打错的,然后通过调试看运行中数据变化,然后重新看题目检查是否有遗漏以及格式是否符合要求,之后可以走开一会再检查逻辑上有没有问题,最后果断寻求外部帮助吧。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多多想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值