猿问

我的代码哪里错了?

北京市出租车打车计费规则如下:

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

http://img.mukewang.com/55c9565d000199f613660746.jpg

求大神解释一下我的程序哪里有问题?谢谢!

沐竹雨
浏览 1588回答 3
3回答

昨夜小楼泣东风

    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;    }  我个人认为答案有问题。。。。它的答案只是算了早上上班的钱。。。。  当然你也可以用数学算算他一天花多少钱

昨夜小楼泣东风

 if((time>=23&&time<=24)||(time>0&&time<5))      {i=1;}-----------------这里应该为i=1.2。晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。      else      {i=1.2;}---------------这里应该为i=1
随时随地看视频慕课网APP
我要回答