PHP怎样打印半边金字塔、实心金字塔、空心金字塔、空心菱形

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jack_num1/article/details/78049388

不同类型金子塔如下,接下来将为大家讲解不同类型的PHP代码原理



代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: Direct
 * Date: 2017/9/21
 * Time: 9:27
 */

//第一个金字塔:同九九乘法表类似
for($i=1;$i<=5;$i++) { //$i代表横排数
    for ($j = 1; $j<=$i; $j++) {  //$j代表每排显示的*数
        echo '*';
    }
    echo "<br>";//每次循环过后需换行
}
//原理:观察图形发现规律,一共有5横排,每排随着排数的增加一次*就多加个,
//每次增加的数总和都是跟比排数小或者相同。

//第二个金字塔
$a=6;//星号要显示的排数
for($i=1;$i<=$a;$i++) {//循环的次数
    //打印左边空白部分,随着层数的增加而减少
    for ($k = 0; $k < $a - $i; $k++) {//第一排左边空白部分跟(排数-1)相同
        echo "&nbsp;";
    }
    //打印每排的星号*
    for ($j = 1; $j <= $i * 2 - 1; $j++) {
        echo "*";
    }
    echo "<br>";//每排完成循环后自动换行
}
//原理如下:观察图像,以以上为例,左边空白部分是按照排数的增加而减少的,从中可发现空白部分与排数的关系(空白部分=排数-1);
//星号同排数之间的关系:星号数=排数+(排数-1)


//第三个金字塔
$a=6;//星号要显示的排数
for($i=1;$i<=$a;$i++){//循环的次数
    //打印左边空白部分,随着层数的增加而减少
    for($k=0;$k<$a-$i;$k++){//第一排左边空白部分跟(排数-1)相同
        echo "&nbsp;";
    }
    //打印每排的星号*
    for ($j=1;$j<=$i*2-1;$j++){
        //第一排和最后一排星号*不变
        if($i==1||$i==$a){
            echo "*";
        }else {
            //每一排第一个都有星号
            if ($j == 1|| $j == $i * 2 - 1) {
                echo "*";
            } else {
                echo "&nbsp;";
            }
        }
    }
    echo "<br>";//每排完成循环后自动换行
}


//打印空心菱形
$a=6;//星号要显示的排数
for($i=1;$i<=$a;$i++){//循环的次数
    //打印左边空白部分,随着层数的增加而减少
    for($k=0;$k<$a-$i;$k++){//第一排左边空白部分跟(排数-1)相同
        echo "&nbsp;";
    }
    //打印每排的星号*
    for ($j=1;$j<=$i*2-1;$j++){
        //第一排和最后一排星号*不变
        if($i==1){
            echo "*";
        }else {
            //每一排第一个都有星号
            if ($j == 1|| $j == $i * 2 - 1) {
                echo "*";
            } else {
                echo "&nbsp;";
            }
        }
    }
    echo "<br/>";//每排完成循环后自动换行
}


for($i=$a;$i>=0;$i--){//循环的次数
    //打印左边空白部分,随着层数的增加而减少
    for($k=0;$k<=$a-$i;$k++){//第一排左边空白部分跟(排数-1)相同
        echo "&nbsp;";
    }
    //打印每排的星号*
    for ($j=1;$j<=$i*2-3;$j++){
            //每一排第一个都有星号
            if ($j == 1|| $j == $i * 2 - 3) {
                echo "*";
            } else {
                echo "&nbsp;";
            }
        }
    echo "<br/>";//每排完成循环后自动换行
}




猜你喜欢

转载自blog.csdn.net/Jack_num1/article/details/78049388
今日推荐