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

我不知道我的程序错在哪里了,运行错误

#include <stdio.h>

float taxifee(int clock,int miles)
{
    float money;
    if(miles<=3)
    {
        money=14;
        printf("费用为14\n");
    }
    else
    {
        if(clock>=23 || clock<5)
        {
            money=13+1+2.3*(miles-3)*1.2;
            printf("夜间车费为:%f\n",money);
        }
        else
        {
            money=13+1+2.3*(miles-3);
            printf("日间车费为:%f\n",money);
        }
    }
   
    return money;   
}
int main()
{
    printf("打的总费用:%.1f\n",taxifee(9,12)+taxifee(18,12));
    return 0;
}


正在回答

4 回答

money=13+1+2.3*(miles-3)*1.2  这一条得到的结果应该是双精度,而定义taxifee为单精度,所以需要强制转换,把float taxifee  换成  double taxifee试一试      //新手的个人理解

0 回复 有任何疑惑可以回复我~

float taxifee(int clock,int miles)

{

    float money;

    if((clock<23 || clock>=5)&&miles>3)

    {

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

        printf("日间车费为:%f\n",money);

       

    }

   else if ((clock>=23 || clock<5)&&miles>3)

    {

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

        printf("夜间车费为:%f\n",money);

    }

    else

    {

        money=14;

        printf("费用为14\n"); 

    }

    return money;   

}

int main()

{

    printf("打的总费用:%.1f\n",taxifee(9,12)+taxifee(18,12));

    return 0;

}

可以用个if else嵌套,我也刚学,互相指点指点……

0 回复 有任何疑惑可以回复我~

#include <stdio.h>

float taxifee(int clock,int miles)
{
    float money;
    if(miles<=3)
    {
        money=14;
        printf("费用为14\n");
    }
    if(clock>=23 || clock<5)
    {
        money=13+1+2.3*(miles-3)*1.2;
        printf("夜间车费为:%f\n",money);
    }
    else
    {
        money=13+1+2.3*(miles-3);
        printf("日间车费为:%f\n",money);
    }
    return money;   
}
int main()
{
    printf("打的总费用:%.1f\n",taxifee(9,12)+taxifee(18,12));
    return 0;
}



我觉得时间条件跟路程条件应该是并列关系,但是路程条件应该在前面。

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

慕瓜4445160

我和你的代码一摸一样 为什么我输出的是18?
2019-07-13 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

我不知道我的程序错在哪里了,运行错误

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