输出菱形
<?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 " ";
}
//$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 " ";
}
//$j是每行的*数
for($j=0;$j<(2*$i-1);$j++ ){
echo "*";
}
echo "<br/>";
}
}
ling(30);
?>
没有评论:
发表评论