//1.数学题
//.一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,
//如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。
<?php
function king($n,$m) {
$monkeys = range(1,$n);//做出1到n的序列号的数组
$i = 0;
while(count($monkeys) > 1) {
if(($i+1)% $m == 0) { //n 表示总人数 m 第几个出局
unset($monkeys[$i]);
} else {
array_push($monkeys,$monkeys[$i]);//array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
unset($monkeys[$i]);
}
$i++;
}
return current($monkeys); //当前数
}
$king = king(100,10);
print_r($king);
?>
<?php
//2.用符号*画一个菱形图案.
for($i=0;$i<4;$i++){
for($j=0;$j<3-$i;$j++){
echo ' ';
}
for($k=0;$k<$i+1;$k++){
echo '* ';
}
echo "<br/>";
}
for($i=3;$i>=0;$i--) {
for($x=0;$x<=3-$i;$x++) {
echo ' ';
}
for($y=0;$y<$i;$y++) {
echo '* ';
}
echo '<br/>';
}
?>
![](https://img2020.cnblogs.com/blog/1525533/202102/1525533-20210210144305458-88130967.png)
<?php
//3.使用五种以上方式获取一个文件的扩展名.
//①
function get_ext1($file_name){
return strrchr($file_name, ‘.’);
}
//备注: strrchr //找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
②
function get_ext2($file_name){
return substr($file_name, strrpos($file_name,‘.’));
}
//备注: strrpos //查找字符串在另一个字符串中最后一次出现的位置。
③
function get_ext3($file_name){
return array_pop(explode(‘.’,$file_name));
}
备注: array_pop //删除数组中的最后一个元素。
④ function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
备注: pathinfo //以数组的形式返回文件路径的信息。
⑤ function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0,strpos(strrev($file_name), ‘.’)));
}
备注: strrev //反转字符串
strpos//返回字符串在另一个字符串中第一次出现的位置。
?>