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

请大神帮我看看对不对


我知道我这样写很啰嗦,但毕竟是我自己的想法,错误多的话还请指出,谢谢

#include <stdio.h>
float fee(int dis,int t)
{   
    float money;
    int flag;
    if(5>t||t>=23)
    {flag=1;}
    else
    {flag=0;}
    if(dis<=3)
    {
        money=14;
        printf("车费为%f元。\n",money);
    }
    else
    {
    if(flag==1)
    {
        money=13+1+(dis-3)*2.3;
    }
    else
    {
        money=13+1+(dis-3)*2.3*1.2;
    }
    return money;
int main()
{
    printf("小明打车费用为%d元",fee(12,9)+fee(12,18));
    return 0;
}


提问者:qq_NirvanaLan_0 2016-03-13 03:39

个回答

  • 只为伊人心独醉
    2016-03-14 12:20:08
    已采纳

    float fee(int dis,int t)逗号格式换成英文的,  return money;后面加}},你缺了两个大括号的后半部分,条件中的燃油费是不分时段的所以就没必要加flag,条件的需要写出来的只有两个时间和距离,你这个我能改的就这么多,不过金额还不对

  • 斜雨潇潇请落下
    2016-03-31 14:49:57

    这个就是根据你的改的,其中的错误,除了楼上那位所说的错误,最重要的是,你把flag的情况搞反了!应该是当flag==1时,*1.2,因为你的条件是t>5||t<=23,这个时间段应该是加钱,结果你给搞反了

  • 斜雨潇潇请落下
    2016-03-31 14:46:17

    #include <stdio.h>

    float fee(int dis,int t)

    {   

        float money;

        if(dis<=3)

            money=14;

        

        else

        {

            if(t<5||t>=23)

                money=13+1+(dis-3)*2.3*1.2;

            else

                money=13+1+(dis-3)*2.3;

        }

        return money;

    }

    int main()

    {

        printf("小明打车费用为%.2f元",fee(12,9)+fee(12,18));

        return 0;

    }