出租车计价的C语言实现

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

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

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

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

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

#include 
//出租车计价
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的处理步骤,直到得到想要的结果:

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

你可能感兴趣的:(C语言,c语言)