PHP练习--用for循环打印空心菱形

思路:1,写出代码打印实心的金字塔

2、修改代码,把金字塔抛空

   3、修改代码,把金字塔倒转

   4、修改倒转后的代码,把金字塔抛空

   5、修改代码,把具体的数进行参数化

1、写出代码打印实心金字的金字塔:

<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
            echo "*";
        }

        echo "<br/>";
    }

?>

2、

2、改善代码,把金字塔抛空

<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
    //打印*号
    for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接
        if($i==1 || $i==5){
            echo "*";
        }else{
        //怎么打空格和*号的问题
            if($k==1 || $k==2*$i-1){
                echo "*";
            }else{
                echo "&nbsp;";
            }
        }
    }
    echo "<br/>";
    }

?>

3、修改代码,把金字塔倒转

<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
            //打印第一行后最后一行都打*连接
            if($i==1 || $i==5){
                    echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
                }
            }
        }
    echo "<br/>";
    }
    //倒转
    for($i=5;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            echo "*";
        }
    echo "<br/>";
    }
?>

4、修改倒转后的代码,把金字塔抛空,并把中间的*号去掉 修改这里的代码(if($i==1 || $i==5){ //去掉$i==5 把中间抛空)

<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接($i==1 || $i==5)
            if($i==1){ //去掉$i==5 把中间抛空
                echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
            }
        }
    }
    echo "<br/>";
    }
    //倒转 抛空
    for($i=5;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            //怎么打空格和*号的问题
            if($k==2*$i-3 || $k==1){
                echo "*";
            }else{
                echo "&nbsp;";
            }
        }
    echo "<br/>";
    }
?>

5、修改代码,把具体的数进行参数化 :把具体数字5改成$n=5代替,随后可以设置$n的值,可以任意放大和缩小

<?php
    $n=5;
    for($i=1;$i<=$n;$i++){
        //打印空格
        for($j=1;$j<=$n-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接($i==1 || $i==5)
            if($i==1){ //去掉$i==5 把中间抛空
                echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
                }
        }
    }
    echo "<br/>";
    }
    //倒转 抛空
    for($i=$n;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=$n-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            //怎么打空格和*号的问题
            if($k==2*$i-3 || $k==1){
                echo "*";
            }else{
                echo "&nbsp;";
            }
        }
    echo "<br/>";
    }
?>

效果图:

最后大功告成。顺便说说 ,其实编程不难,难就难在怎么样的思路,怎样去解决问题的方法。所以大家在编程的过程中善于思考。尽管花了半天的时间去想,但是最后想出来了,问题也得到解决,所以平时要多动脑动手去实践。我们的编程能力才能提高。只有实践了,东西才能被理解,知识点也掌握了。

时间: 2024-08-01 10:45:49

PHP练习--用for循环打印空心菱形的相关文章

for循环打印空心菱形的新方法

相信大家在学习流程控制的循环结构时,一定都用for循环绘制过菱形和空心菱形吧,我记得我当时写的很麻烦,把一个菱形分为上下两部分,上面2重for循环,下面2重for循环,相信有很多的小伙伴都是这样做的吧,但是这样也造成了很多的代码冗余,今天无意间看到另外一种简便的方法,具体思路和实现过程如下图所示: 思路:   1.先画一个正方形,边长为奇数. 2.定义每一行的初始位置和结束位置,初始值为:边长/2+1. 3. 在每一行的输出位置和结束位置打印*,即为最中间的一条竖线. 4.改变初始位置和结束位置

c语言打印空心菱形

***算法:把菱形的中心看成坐标的原点(0,0),由此可以知道,如果|x| + |y| <= n;则打印输出"*"号,否则打印输出" " int mai(){ int n; printf("请输入来那个菱形边长:"); scanf("%d",&n); //打印实心菱形 for (int x = -(n-1); x <= n-1; x++){ for (int y = -(n-1); y <= n-1;

(四)、利用命令行参数输入一个整数,打印空心菱形

1 /*利用命令行参数输入一个整数,并判断该数字是否为奇数,如果是奇数,则用其作行数打印空心菱形 2 –PS:将字符串转换为数字的方法 3 •int num=Integer.parseInt(String number);*/ 4 5 package com.gen; 6 public class ArgumentKongLing { 7 public static void main(String args[]) 8 { 9 for (int m= 0; m < args.length;m++

for循环输出空心菱形的形状【java】

使用for循环语句输出以下"空心菱形"效果: * * * * * * * * * * * * * * * * 建议优先参考笔者的另一篇文章:<for循环输出菱形的形状[java]> 代码: 1 /* 2 * 3 * * 4 * * 5 * * 6 * * 7 * * 8 * * 9 * * 10 * 11 12 分析: 13 上图形似于实心菱形 14 * 15 *** 16 ***** 17 ******* 18 ********* 19 ******* 20 *****

C语言---打印空心菱形

首先找出上尖三角形的空格和*之间的规律,利用for循环的嵌套来输出上尖三角形,if是用来判断是否输出到最后一个*号,如果是就换行. int n = 4; for(int i = 1 ; i <= n ; i++){ for(int j = n - i ; j > 0 ; j-- ){ // n - 1 为每一行需要输出的空格数量 printf(" "); } for(int x = 1 ; x <= 1+(2*(i-1)) ; x++) //1+(2*(i-1)) 为

java 打印空心菱形

public class Demo { public static void main(String[] args) { //首先.把菱形看成上下两部分,上五下四,所以,第一个for循环有5次,第二个for循环有4次 for( int i = 1; i <= 5; i++){ //将空格和*分开看,看" "的变化i=1时,它是4,2的时候是3,找规律 for( int j = 1; j <= 5-i ; j++){ System.out.print(" "

打印空心菱形

// 空心棱形function Rect(){ var rows=10; var cols=20; for(var i=0;i<cols;i++){ for(var j=0;j<(cols-i);j++){ document.write(" "); } for(var k=0;k<(2*i-1);k++){ if(k>0 && k<2*i-2){ document.write(" ") } else{ document.

循环打印一个菱形英文字母...

第二题怎么做?!!!!! 版权声明:本文为博主原创文章,未经博主允许不得转载.

使用while循环打印一个菱形,菱形要星号(*)打印。菱形的行数需要从python控制台输入,行数必须是奇数。

line = input("请输入一个正整数,必须是奇数:") line=int(line) if line % 2 ==0: maxspaceNum = line // 2 i = 1 linespaceNum = maxspaceNum while linespaceNum >= 0: print(" " linespaceNum,end="") print("*" * (2*i-1)) linespaceNum -