求大佬解答哪里不对

来源:5-14 综合练习

喜居

2018-11-21 18:42

#include <stdio.h>
int charge(float clock,float mile)
{
    float money;
    if(clock<5&&clock>=23)
    {
        if(mile<=3)
        {
            money=14;
        }
        money=13+((mile-3)*2.76)+1;
    }
    else
    {
        money=13+((mile-3)*2.3)+1;
    }
    return money;
}
int main()
    {
    printf("%.2f",charge(9,12)+charge(18,12));
    return 0;
    }

写回答 关注

2回答

  • 北剑川
    2018-11-21 21:01:20
    已采纳
    1. 自定义函数为int型,与形参,实参均不符

    2. “ if(mile<=3)
              {
                  money=14;
              }
              money=13+((mile-3)*2.76)+1; ”

      此执行体中漏了 else

    3. else的情况中也要分mile是大于3,还是小于3.

    4. 出租车收费问题中应该要注意到超过3公里后不足1公里也会按1公里收费,所以涉及到一个取整的问题。这里注意,在自定义函数中,无法调用【 】取整符号,可以通过自定义int型变量来实现。


    北剑川 回复喜居

    第一条是你的主要问题,已解决。 第二条是针对时间在23点至5点的收费问题的,当你时间定为23点至5点,mile定为小于等于3的数时,你会发现结果不为14,这就出问题了。 第三条是针对在5点至23点间路程小于等于3时的问题的,结果会不是14,也出问题了。 第四条是针对非整数路程时的收费问题的,当路程不为整数时,收费与实际数学问题不符。 (当然,如果你只追求12这一个路程,一个数据,这里给出的这一道题,而不曾考虑解决问题的周全性,以及自己思考问题的能力的话,当我没说)打字挺累的,望采纳

    2018-11-21 21:23:26

    共 2 条回复 >

  • 北剑川
    2018-11-21 21:15:26

    取整中还要注意,当公里数为整数与非整数时,费用计算的差异。

    参考代码:

            int p;

            p=mile-3;

            money=14+p*2.3;

            if(money<(14+(mile-3)*2.3))

           money+=2.3;

    (祝你敲出完美的代码!)


    喜居

    特别感谢,是我自己没有考虑全面,我会努力的

    2018-11-22 21:31:53

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题