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

输出错了。还有别的大佬帮忙修改优化一下吗?

#include <stdio.h>

float cost(int x,int y)

{

    float money;

    float price=2.3;

    if(x>=23||x>=0&&x<5)

    {

        price*=1.2;

    }

    else

{

        goto LOOP;

}

    LOOP:if(y<=3)

    {

        money=13+1;

    }

    else

    {

        money=13+(y-3)*price+1;

    }

    return money;

}

int main()

{

   int x=9;

   int y=12;

 float money;

    cost(x,y);

   float cost1=money;

    x=18;

    y=12;

    cost(x,y);

    float cost2=money;

    float totalcost=cost1+cost2;

    printf("小明每天打车的总费用是%.2f\n",totalcost);

    return 0;

}


正在回答

3 回答

#include <stdio.h>

float money;

float cost(int x,int y)

{

    double price=2.3;

    if(x>=23&&x<=5)

    {

        money*=1.2;

    }

    if(y<=3)

    {

        money=13+1;

    }

    else

    {

        money=13+(y-3)*price+1;

    }

    return money;

}


int main()

{

    int x=9;

    int y=12;

    cost(x,y);

    float cost1=money;

    printf("%.2f",cost1);

    x=18;

    cost(x,y);

    float cost2=money;

    float totalcost=cost1+cost2;

    printf("%.2f",cost2);


    printf("小明每天打车的总费用是%.2f\n",totalcost);


    return 0;


}

这是我照着你的改的,结果正确,你要记住,小数是浮点数类,要用double或者float定义

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

ARUKANA 提问者

照你的这个还是改不出正确的结果。我确实大意写错了数据类型,但即便改了数据类型为浮点型,把%d改成%2.f,还是不能算出正确结果。我觉得你的里边少了一些必要的东西吧,比如主函数里没有一句float money,系统就会报错。然而还是不行。能帮忙再找找我写的还有什么问题吗?或者,能帮忙完善下你的修改代码吗?
2019-02-20 回复 有任何疑惑可以回复我~

#include <stdio.h>

float money;

float cost(int x,int y)

{

    double price=2.3;

    if(x>=23&&x<=5)

    {

        money*=1.2;

    }

    if(y<=3)

    {

        money=13+1;

    }

    else

    {

        money=13+(y-3)*price+1;

    }

    return money;

}


int main()

{

    int x=9;

    int y=12;

    cost(x,y);

    float cost1=money;

    printf("%.2f",cost1);

    x=18;

    cost(x,y);

    float cost2=money;

    float totalcost=cost1+cost2;

    printf("%.2f",cost2);


    printf("小明每天打车的总费用是%.2f\n",totalcost);


    return 0;


}


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

 int price=2.3;

    if(x>=23||x>=0&&x<5)

    {

        price*=1.2;

    }

你这段函数的逻辑有问题,应该改成money*=1.2;然后,price应该是double或者float定义。不然输出结果也是错的

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

HarryDong

money也是
2019-02-17 回复 有任何疑惑可以回复我~
#2

ARUKANA 提问者

这个有问题,应该是每公里单价价格提高20%,不是总价提高20%。所以是price*1.2吧。
2019-02-20 回复 有任何疑惑可以回复我~
#3

HarryDong 回复 ARUKANA 提问者

是总价,在资料里有答案
2019-02-20 回复 有任何疑惑可以回复我~
#4

ARUKANA 提问者 回复 HarryDong

我看一下
2019-02-20 回复 有任何疑惑可以回复我~
#5

ARUKANA 提问者 回复 HarryDong

答案里头是单价。perprize*1.2
2019-02-20 回复 有任何疑惑可以回复我~
#6

HarryDong 回复 ARUKANA 提问者

那就是我错了,但写完结果是一样的啊
2019-02-20 回复 有任何疑惑可以回复我~
#7

ARUKANA 提问者 回复 HarryDong

答案里头是单价perprice*=1.2
2019-02-20 回复 有任何疑惑可以回复我~
#8

ARUKANA 提问者 回复 HarryDong

计算错了,结果还能一样。。。。
2019-02-20 回复 有任何疑惑可以回复我~
查看5条回复

举报

0/150
提交
取消

输出错了。还有别的大佬帮忙修改优化一下吗?

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