阅读模式:

深圳易加油信息科技有限公司PHP开发笔试题

查看:583  :0  类型:  来源:php自学网  标签 面试题

如图:

深圳易加油php笔试题.jpg

    所有去面试的开发共用这一道笔试题,php开发去面试了先php开发工程师面,然后技术总监面,最后人事面,确定后第二天会有CEO进行一个视频聊天进行简单了解。

编程题 

    如果你去一家超市购物,钱包里现有X张10元纸币,y张5元纸币,Z张2元纸币,shop 完后需要支付11元.要求编写一个高效率的函数pay( x, y, z, n),判断能否用 钱包里的这些纸币去凑齐n元,而不需要找零。 

    a.能的话,输出一个方案;(例子:”需要12张十元纸币,1张五元纸币,2张 两元纸币刚好可凑齐129元”) 

    b.凑不齐的话,打印出“不能刚好凑齐n元”.


以下答案仅供参考:

<?php
$x = 10;
$y = 5;
$z = 2;
$n = 128;

echo "共{$n}元:<br/>";
pay($x, $y, $z, $n);

function pay($x, $y, $z, $n)
{
	if ($n % $x == 0) {
		echo '需要' . $n / $x . '张10元纸币,0张5元纸币,0张2元纸币';
	} elseif ($n % $y == 0) {
		echo '需要0张10元纸币,'. $n / $y .'张5元纸币,0张2元纸币';
	} /*elseif ($n % $z == 0) {
		echo '需要0张10元纸币,0张5元纸币,'. $n / $z .'张2元纸币';
	}*/ else {
		if ($n % $x >= 0) {
			// 计算10元
			echo '需要'. floor($n / $x) .'张10元纸币,';
			
			// 计算5元
			if (($n % $x) % $y == 0 ) {
				echo '需要' . floor(($n % $x) / $y) . '张5元纸币,';
			} 
			if (($n % $x) % $y > 0 ) {
				echo '需要' . floor(($n % $x) / $y) . '张5元纸币,';
			}
			
			// 计算2元
			if (($n % $x) % $y % $z >= 0) {
				echo '需要' . floor((($n % $x) % $y) / $z) . '张2元纸币';
			}
			if (((($n % $x) % $y % $z) > 0) && ((($n % $x) % $y % $z) < $z)) {
				echo ',不能凑齐' . (($n % $x) % $y) % $z . '元';
			}
			
		} else {
			echo "需要0张10元纸币,";
			
			// 计算5元
			if ($n % $y == 0) {
				echo '需要'. $n / $y . '张5元纸币,';
			} 
			if ($n % $y > 0) {
				echo '需要'. floor($n / $y) . '张5元纸币,';
			}
			
			// 计算2元
			
			if ((($n % $y) % $z) >= 0 ) {
				echo '需要' . floor(($n % $y) / $z) . '张2元纸币';
			}
			
			if ((($n % $y % $z) > 0) && (($n % $y % $z) < $z )) {
				echo ',不能凑齐' . $n % $y % $z . '元';
			}
			
		}
	}
}
// 运行结果

// 共129元:
// 需要12张10元纸币,需要1张5元纸币,需要2张2元纸币

// 其他金额

// 共128元:
// 需要12张10元纸币,需要1张5元纸币,需要1张2元纸币,不能凑齐1元

// 共9元:
// 需要0张10元纸币,需要1张5元纸币,需要2张2元纸币
分享到:
0 0

我的看法:

IN: