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

运行成功,但计算结果不对

#include <stdio.h>

    int cal(int km, int tm)

    {

    float start = 13;

    float ppk = 2.3;

    float price;

    

    if(km<=3)

    {

        price = (start+1)*2;

    printf("打车总费用为%f元。", price);

    }

    else if(0<=tm<5 || tm>=23)

    {

        price = (start + ppk*(km-3)*1.2+1)*2;

    printf("打车总费用为%f元。", price);

    }

    else 

    {

        price = (start+ ppk*(km-3) + 1)*2;

    printf("打车总费用为%f元。",price);

    }

    return price;

    }

int main()

{

    cal(12,9);

    


return 0;

}


计算结果用了第二种情况,加了20%,但看起来逻辑没错呀?

求大神

提问者:qq_慕圣7419269 2019-05-25 19:58

个回答

  • qq_慕慕4513966
    2019-06-02 19:29:12

    自创函数定义的时候返回值应为float型的而不是int型

  • 慕仰1297087
    2019-05-27 06:36:12

      0<=tm<5 || tm>=23等价于(0<=tm)<5||tm>=23,你这样子写系统会先判断0<=tm(24进制的时间里必定成立),等于1,再判断1<5,成立,则不判断是否大于23。c语言里连续的判断,要写写成tm>=0&&tm<5||tm>=23,