问答详情
源自:5-14 综合练习

求大佬解答哪里不对

#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;
    }

提问者:喜居 2018-11-21 18:42

个回答

  • 北剑川
    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型变量来实现。


  • 北剑川
    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;

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