【PHP7 流程控制和函数 习题六】某城市出租车计费问题

题目:

  • 每日 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元

      扫描二维码关注公众号,回复: 3792779 查看本文章

      ① 距离 <= 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."元";

三、运行结果

1)时间在 00:00- 5:00 和 22:00 - 24:00 时;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)时间在 06:00- 21:00 时;

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/82875547
今日推荐