算法(一)



//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 '&nbsp;';
    }
    for($k=0;$k<$i+1;$k++){
    echo '* ';
    }
    echo "<br/>";
}
for($i=3;$i>=0;$i--) {
    for($x=0;$x<=3-$i;$x++) {
       echo '&nbsp;';
    }
    for($y=0;$y<$i;$y++) {
       echo '* ';
    }
    echo '<br/>';
}
?>

<?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//返回字符串在另一个字符串中第一次出现的位置。 ?>
 
原文地址:https://www.cnblogs.com/kevin-yang123/p/14395743.html