北京市出租车打车计费规则如下:
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
求大神解释一下我的程序哪里有问题?谢谢!
昨夜小楼泣东风
昨夜小楼泣东风