题目:
- 每日 06:00 - 21:00,起步价6元,当日 22:00 - 次日 05:00,起步价7元。
- 起步价包含2公里,超出部分按照每公里 1.5 元收费。
- 每次乘车加收 1 元 的燃油附加税
输出打车的时间和距离,计算本次打车的费用。
一、解题思路:
1)方法一:
-
将时间段分为三个:
- 00:00 - 05:00, 起步价7元
- 06:00 - 21:00, 起步价6元
- 22:00 - 24:00,起步价7元
-
定义三个变量
- 时间
$time
- 距离
$distance
- 费用
$const
- 时间
-
每个时间段的费用
-
00:00 - 05:00
起步价7元
① 距离 <= 2,费用 = 起步价7元 + 燃油附加税1元;
$const = 8; // 7+1
② 距离 > 2, 费用 = 起步价7元 + (距离 - 2) * 1.5元/km + 燃油附加税1元
$const = 7 + ($distance -2) * 1.5 + 1;
-
06:00 - 21:00
起步价6元
① 距离 <= 2,费用 = 起步价6元 + 燃油附加税1元;
$const = 7; // 6+1
② 距离 > 2,费用 = 起步价6元 + (距离 - 2)* 1.5元/km + 燃油附加费1 元;
$const = 6 + ($distance - 2) * 1.5 + 1;
-
22:00 - 24:00
起步价7元
① 距离 <= 2,费用 = 起步价7元 + 燃油附加税1元;
$const = 8; // 7+1
② 距离 > 2, 费用 = 起步价7元 + (距离 - 2) * 1.5元/km + 燃油附加税1元;
$const = 7 + ($distance - 2) * 1.5 + 1;
-
2)方法二:
-
将时间段分为三个:
- 00:00 - 05:00, 起步价7元
- 06:00 - 21:00, 起步价6元
- 22:00 - 24:00, 起步价7元
-
定义三个变量
- 时间
$time
- 距离
$distance
- 费用
$const
- 时间
-
每个时间段的费用(可以把 00:00- 5:00 和 22:00 - 24:00 合到一起计算,因为起步价相同)
-
00:00- 5:00 和 22:00 - 24:00
起步价7元
① 距离 <= 2,费用 = 起步价7元 + 燃油附加税1元;
$const = 8; // 7+1
② 距离 > 2, 费用 = 起步价7元 + (距离 - 2) * 1.5元/km + 燃油附加税1元
$const = 7 + ($distance -2) * 1.5 + 1;
-
06:00 - 21:00
起步价6元
① 距离 <= 2,费用 = 起步价6元 + 燃油附加税1元;
$const = 7; // 6+1
② 距离 > 2, 费用 = 起步价6元 + (距离 - 2) * 1.5元/km + 燃油附加税1元
$const = 7 + ($distance -2) * 1.5 + 1;
-
二、代码实现
1)方法一:
$time = 3; // 时间
$distance = 8; // 距离
$const = 0; // 费用
function countPrice($time, $distance) {
if ($time >= 0 && $time <= 5) {
if ($distance > 2) {
$const = 7 + ($distance - 2) * 1.5 + 1;
} else {
$const = 8; // 7+1
}
} else if ($time >= 6 && $time <= 21) {
if ($distance > 2) {
$const = 6 + ($distance - 2) * 1.5 + 1;
} else {
$const = 7; // 6+1
}
} else if ($time >= 22 && $time <= 24) {
if ($distance > 2) {
$const = 7 + ($distance - 2) * 1.5 + 1;
} else {
$const = 8; // 7+1
}
} else {
// 当时间不在以上时间段内时
return "请输入合法时间";
}
return $const;
}
$res = countPrice($time, $distance); // 调用函数
echo "时间为".$time."距离为".$distance."的费用为:".$res."元";
2)方法二:
$time = 3; // 时间
$distance = 8; // 距离
$const = 0; // 费用
function countPrice($time, $distance) {
if ( ($time >= 0 && $time <= 5) || ($time >= 22 && $time <= 24) ) {
if ($distance > 2) {
$const = 7 + ($distance - 2) * 1.5 + 1;
} else {
$const = 8; // 7+1
}
} else if ($time >= 6 && $time <= 21) {
if ($distance > 2) {
$const = 6 + ($distance - 2) * 1.5 + 1;
} else {
$const = 7; // 6+1
}
} else {
// 当时间不在以上时间段内时
return "请输入合法时间";
}
return $const;
}
$res = countPrice($time, $distance); // 调用函数
echo "时间为".$time."距离为".$distance."的费用为:".$res."元";