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

我的代码哪里错了?

我的代码哪里错了?

C C++
沐竹雨 2015-08-11 09:57:26
北京市出租车打车计费规则如下:1. 每公里单价计费2.3元2. 起步价13元(包含3公里)3. 晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。4. 每次乘车加收1元钱的燃油附加税。小明每天上下班都要打车,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。请编写一个小程序计算小明每天打车的总费用。下面的是我的代码:#include <stdio.h> int zongfeiyong(int time,int n) {   int price=2.3,i,sum=0;//定义单价,单价增幅比,总费用   if(n>0&&n<=3)   {sum=13+1;}   else   {       if((time>=23&&time<=24)||(time>0&&time<5))       {i=1;}       else       {i=1.2;}       sum=(price*i)*(n-3)+13+1;   }      return sum; } int main() {   int am,pm,l,sumam,sumpm; /*am早上的时间,pm下午的时间,l距离,sumam早上花费的费用,pm下午花费的费用*/     am=9;     pm=6;     l=12;    sumam=zongfeiyong(am,l);    printf("小明上午%d点打车花费了%d元!\n",am,sumam);    sumpm=zongfeiyong(pm,l);     printf("小明下午%d点打车花费了%d元!\n",pm,sumpm);     printf("小明每天打车的总费用是%d元!\n",sumam+sumpm);   return 0;   }下面我上面的程序计算得到的结果:小明上午9点打车花费了32元!小明下午6点打车花费了32元!小明每天打车的总费用是64元!但是慕课网给的参考答案是:#include <stdio.h> double getTaxiPrice(int hours,int distance) { double totalPrice = 0.0; //定义打车费用  double perPrice = 2.3; //定义每公里单价计费  int startPrice = 13; //定义起步价  if(hours<0 || hours>24){ printf("请填写正确的时间\n"); return 0; } else if(!(hours>=5 && hours<23)) //判断打车时间是否要增加费用 { perPrice *= 1.2; //费用增加20%                          } if(distance >3) //判断公里数 { totalPrice = startPrice +(distance - 3)*perPrice; //计算价钱 } else { totalPrice = startPrice;     } totalPrice++; //加一块钱的燃油费 return totalPrice; } int main() { int moring = 9; //定义上午打车时间 int afternoon = 18; //定义下午打车时间 int distance = 12; //定义打车公里数 double totalPrice = 0; //定义总费用 if(getTaxiPrice(moring,distance) != 0) { totalPrice = getTaxiPrice(moring,distance); //调用计算费用的函数 } else if(totalPrice != 0) { totalPrice += getTaxiPrice(afternoon,distance); //调用计算费用的函数 } printf("小明每天打车的总费用是:%.2f\n",totalPrice); //输出 return 0;     }下面是参考答案的计算结果:小明每天打车的总费用是:34.70求大神解释一下我的程序哪里有问题?谢谢!
查看完整描述

3 回答

?
昨夜小楼泣东风

TA贡献2条经验 获得超0个赞

    if(getTaxiPrice(moring,distance) != 0)
    {
        totalPrice = getTaxiPrice(moring,distance);  
        printf("早上的这句我运算啦\n");------------这一句输出啦,说明计算了早上的钱
    }
    else if(totalPrice != 0)
    {
        totalPrice += getTaxiPrice(afternoon,distance);   
        printf("晚上的这句我运算啦\n");-------这一句并没有输出,说明根本没进else if中
                                                    所以他根本没算晚上的钱
    }
    printf("小明每天打车的总费用是:%.2f\n",totalPrice);    
    return 0;   
}
 我个人认为答案有问题。。。。它的答案只是算了早上上班的钱。。。。
 当然你也可以用数学算算他一天花多少钱


查看完整回答
反对 回复 2015-08-13
?
昨夜小楼泣东风

TA贡献2条经验 获得超0个赞

 if((time>=23&&time<=24)||(time>0&&time<5))

      {i=1;}-----------------这里应该为i=1.2。晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。

      else

      {i=1.2;}---------------这里应该为i=1

查看完整回答
反对 回复 2015-08-11
  • 沐竹雨
    沐竹雨
    谢谢,但是这不是主要的错误!即使修改过来也不是正确答案啊
  • 3 回答
  • 0 关注
  • 1587 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信