面试题01

<?php

   
    # 不适用PHP内置函数,实现字符串的翻转
   
   header('content-type:text/html;charset=utf-8');
   function str_rev($str){
       $len = strlen($str);
       $tmp = '';
       for($i=0;$i<($len/2);$i++){
          $tmp = $str[$i];
          $str[$i] = $str[$len-1-$i];
          $str[$len-1-$i] = $tmp;
       }
      return $str;
   }
   $str ='abcdefg';
   $new_str = str_rev($str);
   //echo '翻转前:',$str,',翻转后:',$new_str;
   #输出用户的ip地址,并且判断用户的ip地址是否在192.168.1.100---192.168.1.150
   function compare_ip($ip){
     $pt = strrpos($ip,'.');
     $rip = substr($ip,$pt+1);
     $lip = substr($ip,0,($pt));
     $lip = str_replace('.','',$lip);
     if($lip != 1921681){
        echo '不在这个范围';
        
     }else{
          if($rip >=100 && $rip <=150){
               echo '在这个范围';
          }else{
                echo '不在这个范围';
          }
     }
    
   }
   //$ip = $_SERVER['REMOTE_ADDR'];
   $ip = '192.168.1.122';
  // compare_ip($ip);
  #请将二维数组按照name的长度进行重新排序,按照顺序将id赋值(从1开始);
  $tarr = array(
            array('id'=>0,'name'=>'123833'), 
            array('id'=>0,'name'=>'aaa'),
            array('id'=>0,'name'=>'albabaababa'),
            array('id'=>0,'name'=>'12356'),
            array('id'=>0,'name'=>'123abcff')
  );
  function sort_arr($arr){
      $tmp = '';
      for($i=0;$i<count($arr);$i++){
         $k = $i;
         for($j=$i+1;$j<count($arr);$j++){
           if(strlen($arr[$k]['name']) > strlen($arr[$j]['name'])){
                $k = $j;
           }
         }
         if($k != $i){
           $tmp = $arr[$k];
           $arr[$k] = $arr[$i];
           $arr[$i] = $tmp;
         }
      }
     
      for($i = 0 ;$i<count($arr);$i++){
         $arr[$i]['id'] = $i+1;
      }
      return $arr;
  }
  $newarr = sort_arr($tarr);
  /*foreach($newarr as $v){
  
     echo "
",$v['id'],'===>',$v['name'],'<br/>';
  }*/
  #有 1-5000 一组乱序数列 ,请使用   进行排序
  function arr_sort(&$arr3){
         $tmp = 0;
       for($i=0;$i<count($arr3)-1;$i++){
          $flag = false;
          for($j=0;$j<count($arr3)-1-$i;$j++){
                if($arr3[$j] > $arr3[$j+1]){
                    $tmp = $arr3[$j];
                    $arr3[$j] = $arr3[$j+1];
                    $arr3[$j+1] = $tmp;
                    $flag = true;
                }
          }
          if(!$flag){
             break;
          }
       }
  }
  $arr = array(20,11,22,34,1,2,3,4,5,6,7,8,9,10);
  /*arr_sort($arr);
  echo '<pre>';
  print_r($arr);
  echo '</pre>';*/
 #百钱买白鸡问题:公鸡3元一只,母鸡5元一只,小鸡1元3只,一百元买一百只鸡,请使用伪代码写出求公鸡数,母鸡数,小鸡数
/* x -公鸡数  y- 母鸡数  z--小鸡数
 3x+5y+z/3 = 100;   
 x+y+z = 100;
 公鸡数:18母鸡数:4小鸡数:78
公鸡数:11母鸡数:8小鸡数:81
公鸡数:4母鸡数:12小鸡数:84
得出结论 从循环次数最少的情况开始
*/
  for($m=1;$m<(100/5);$m++){//母鸡最多买20
      for($g=1;$g<(100/3);$g++){//公鸡最多买33只
          $x = 100 - $g - $m;//取得小鸡的数目
          if((($g*3) + ($m*5) + ($x/3)) == 100){
             //echo '公鸡数:',$g,'母鸡数:',$m,'小鸡数:',$x,'<br/>';
             
          }
      }
  }
  #斐波拉契数列
  //11235迭代法
 /* function fbj($num){
      $fb1 = 1;
      $fb2= 1;
      $fb3= 0;
      for($i=1;$i<=$num;$i++){
          if($i <= 2){
             $fb3 = 1;
          }else{
              $fb3 = $fb1+$fb2;
             $fb1 = $fb2;
             $fb2 = $fb3;
          }
      }
      return $fb3;
  }*/
  //递归
  function fbj($n){
      $fb = 0;
     if($n <=2){
        $fb = 1;
     }else{
       $fb = fbj($n-1)+fbj($n-2);
     }
     return $fb;
  }
echo(fbj(30));

?>
原文地址:https://www.cnblogs.com/YangJieCheng/p/5695774.html