请教大大们,php面试题

米米啊啊 2017-11-13 11:54:49
某个商城中用户消费1元送1积分,商家为了刺激用户消费,用户消费1000元送1200积分,消费2000元送2500积分,消费5000元送8000积分。
(1)用户消费1500元,应送____积分,消费4000元应送____积分,消费8500元应送____积分
(2)请写出一个函数实现上述逻辑,输入为用户消费的金额,输出为送的积分数量


感觉需要用到一个数学公式吧?
...全文
1039 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43984907 2019-02-28
  • 打赏
  • 举报
回复
引用 12 楼 HelloVHades 的回复:
正解: function calScore($consume) { $score = 0; if($consume >= 5000 ) { $score = $consume + 5000; } elseif($consume >= 2000 && $consume < 5000) { $score = $consume + 2500; } elseif($consume >= 1000 && $consume < 2000) { $score = $consume + 1200; } else { $score = $consume; } return $score; } echo calScore(1500) . PHP_EOL; echo calScore(4000) . PHP_EOL; echo calScore(8500) . PHP_EOL;
你这个第一个2700啊好像不对吧
HelloVHades 2019-02-28
  • 打赏
  • 举报
回复
正解: function calScore($consume) { $score = 0; if($consume >= 5000 ) { $score = $consume + 5000; } elseif($consume >= 2000 && $consume < 5000) { $score = $consume + 2500; } elseif($consume >= 1000 && $consume < 2000) { $score = $consume + 1200; } else { $score = $consume; } return $score; } echo calScore(1500) . PHP_EOL; echo calScore(4000) . PHP_EOL; echo calScore(8500) . PHP_EOL;
  • 打赏
  • 举报
回复
找个三年级的小朋友去做第一题,然后把思路写下来,翻译成代码——》第二题就出来了
chenrui310 2018-04-12
  • 打赏
  • 举报
回复
我想问一下出这题的人,一个客户消费1999,给的积分优惠 还比消费1000的人 给的优惠低很多?这样对客户公平不?
落叶秋2020 2017-11-17
  • 打赏
  • 举报
回复
这个是递归思维 楼上这个就可以的

/**
     * 计算积分
     */
    function calc_integral($integral)
    {
        $integral = intval($integral);
        if($integral >= 5000) {return 8000 + calc_integral($integral-5000);}
        if($integral >= 2000) {return 2500 + calc_integral($integral-2000);}
        if($integral >= 1000) {return 1200 + calc_integral($integral-1000);}
        return $integral;
    }
leiyuqing_jing 2017-11-14
  • 打赏
  • 举报
回复
public function calculatePoint($consume) { $count_5000 = floor($consume / 5000); $consume = $consume - $count_5000 * 5000; $count_2000 = floor($consume / 2000); $consume = $consume - $count_2000 * 2000; $count_1000 = floor($consume / 1000); $consume = $consume - $count_1000 * 1000; return $count_5000 * 8000 + $count_2000 * 2500 + $count_1000 * 1200 + $consume; }
beatyou385981202 2017-11-14
  • 打赏
  • 举报
回复
我的方法是正常思路,你可以拿去借鉴一下

    /**
     * 计算积分
     */
    function calc_integral($integral)
    {
        $integral = intval($integral);
        if($integral >= 5000) {return 8000 + calc_integral($integral-5000);}
        if($integral >= 2000) {return 2500 + calc_integral($integral-2000);}
        if($integral >= 1000) {return 1200 + calc_integral($integral-1000);}
        return $integral;
    }
xuzuning 2017-11-13
  • 打赏
  • 举报
回复
消费1元送1积分! #4 的 getIntegral(1500) 得 1201 显然是不对的!应为 1700
natici 2017-11-13
  • 打赏
  • 举报
回复
引用 4 楼 qq_26466931 的回复:

<?php

if(!function_exists('getIntegral')){

	function getIntegral($rmb){
		$itl = 0;
		if($rmb >= 1){
			$itl += 1;
		}
		if($rmb >= 1000){
			$itl += 1200;
		}
		if($rmb >= 2000){
			$itl += 2500;
		}
		if($rmb >= 5000){
			$itl += 8000;
		}
		return $itl;
	}
}


dump(getIntegral(1500));die;

这个回答明显是错的
韩十七 2017-11-13
  • 打赏
  • 举报
回复

<?php

if(!function_exists('getIntegral')){

	function getIntegral($rmb){
		$itl = 0;
		if($rmb >= 1){
			$itl += 1;
		}
		if($rmb >= 1000){
			$itl += 1200;
		}
		if($rmb >= 2000){
			$itl += 2500;
		}
		if($rmb >= 5000){
			$itl += 8000;
		}
		return $itl;
	}
}


dump(getIntegral(1500));die;

xuzuning 2017-11-13
  • 打赏
  • 举报
回复
第二问的答案要根据第一问答案给出,你不给,我不做 反正不是我答题
米米啊啊 2017-11-13
  • 打赏
  • 举报
回复
第一问第二问都是自己写答案
xuzuning 2017-11-13
  • 打赏
  • 举报
回复
先给出第一问答案

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧