2013年4月24日星期三

输出菱形

<?php

    
//打印菱形
    
function ling($n){
        
//分别打印菱形的上三角和下三角
        //用(n+1)/2和(n-1)/2可以获得三角的底边,但是需要考虑奇偶行数
        //要用到的函数:ceil向上取整,floor向下取整
        //假设n=20,floor((n+1)/2)=10,ceil((n-1)/2)=10
        //假设n=21,(n+1)/2=11,(n-1)/2=10,用哪个函数不影响结果
        
        
        //先打印上半部分的三角形
        //第m行的*为(2m-1)个,共floor((n+1)/2)行
        //每行前面的空格数为(n-m)个
        
        //$i是行数
        
for($i=1;$i<=floor(($n+1)/2);$i++ ){
            
            
//$k是每行的空格数,最后一行0个空格
            
for($k=0;$k<floor(($n+1)/2)-$i;$k++){
                echo 
"&nbsp";
            }
            
//$j是每行的*数
            
for($j=0;$j<(2*$i-1);$j++ ){
                echo 
"*";
            }
            echo 
"<br/>";
        }

        
//打印菱形的下半部分三角形
        //共(n-1)/2行
        
for($i=ceil(($n-1)/2);$i>0;$i-- ){
            
//$k是每行的空格数
            //假设是从($n+1)/2开始打印的,实际没有打印第($n+1)/2行,因为上半部分的时候已经打印了
            
for($k=0;$k<floor(($n+1)/2)-$i;$k++){
                echo 
"&nbsp";
            }
            
//$j是每行的*数
            
for($j=0;$j<(2*$i-1);$j++ ){
                echo 
"*";
            }
            echo 
"<br/>";
        }
    }

    
ling(30); 


?>


没有评论:

发表评论