为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬解答哪里不对

#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 回答

  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型变量来实现。


3 回复 有任何疑惑可以回复我~
#1

喜居 提问者

但是我只把int改为float就可以得出正确结果了,请问下面那些有必要吗?谢谢回复
2018-11-21 回复 有任何疑惑可以回复我~
#2

北剑川 回复 喜居 提问者

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

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

参考代码:

        int p;

        p=mile-3;

        money=14+p*2.3;

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

       money+=2.3;

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


3 回复 有任何疑惑可以回复我~
#1

喜居 提问者

特别感谢,是我自己没有考虑全面,我会努力的
2018-11-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       924453    人
  • 解答问题       20757    个

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

进入课程

求大佬解答哪里不对

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信