php小练习——实现几种不同的金字塔

首先,从简单的着手,打印出金字塔的右半部分,代码如下

<?php
  $n=5; //金字塔行数
  //外层的for循环控制层数
  for($i=1;$i<=$n;$i++){
    //内层的for循环控制每层*的个数
    for($j=1;$j<=$i;$j++){
      echo"*";
    }
    echo"<br/>";    //每一层打印完换行
  }
?>



然后打印出完整的金字塔,完整的金字塔,在上面的基础下只需要做小小的修改,

<?php
$n=5; //金字塔行数
for($i=1;$i<=$n;$i++){
    //在打印*之前,先打印空格
    for($k=1;$k<=$n-$i;$k++){
        echo"&nbsp;";
    }
    //内层控制每层*的个数
    for($j=1;$j<=2*$i-1;$j++){
        echo"*";
    }
    echo"<br/>";
}
?>

注:把上面的代码复制到php文件中,会出现不知名的错误,应该是格式问题,但是代码是正确的。



然后是空心金字塔,代码如下:

 1 <?php
 2 $n=5;
 3 for($i=1;$i<=$n;$i++){
 4     for($k=1;$k<=$n-$i;$k++){
 5         echo"&nbsp;";
 6     }
 7     //内层控制每层*的个数
 8     for($j=1;$j<=$i*2-1;$j++){
 9         //第一层和最后一层*不变
10         if($i==1||$i==$n){
11             echo"*";
12         }
13         //其他层第一个和最后一个位置打印*,其他位置打印空格
14         else{
15             if($j==1||$j==$i*2-1){
16                 echo"*";
17             }else{
18                 echo"&nbsp;";
19             }
20         }
21     }
22     echo"<br/>";
23 }
24 echo"<hr/>"
25 ?>



接下来,是菱形

<?php
$n=5;
for($i=1;$i<=$n;$i++){
    for($k=1;$k<=$n-$i;$k++){
        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=$n;$i>=1;$i--){
    for($k=1;$k<=$n-$i;$k++){
        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/>";
}
?>

注:上述代码在不同的浏览器可能显示有差异

由于是初学php,如果上述代码有错误之处,还请各位看客指正,谢谢!

时间: 2024-10-05 20:30:34

php小练习——实现几种不同的金字塔的相关文章

一个小题目的三种不同的解法

有一道很经典的Java题目,虽然很简单,但是可以开发出很多种不同的解法,这是我在今天重新复习了正则的时候,忽然回想起来的.题目的名字是:"查找一个小串在大串中出现的次数."有三种思路,第一种,利用substring,通过寻找小串出现的位置,改变大串从小串出现的位置处重新寻找小串的位置,以此类推.第二种解法,直接用小串分割大串,分割出的字符串数组长度-1即是小串出现的次数,但是这时要考虑一种特殊情况,即小串出现在末尾处.这时候字符串数组的长度就是小串出现的次数.第三种利用正则表达式中Pa

在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别

jsp中常用的几个内置对象: 一.request对象 主要作用:  (1)获取请求页面的信息   比如:request.getParameter("参数名");  (2)获取客户端的信息   比如:request.getRemoteAddr();//获取客户端的IP地址.  (3)处理乱码   比如:request.setCharacterEncoding("UTF-8"); 二.response对象 主要作用:  (1)请求重定向(客户端跳转)  response

微笑小程序的几种跳转方式

微信小程序页面跳转 的几种方式 最近在做微信小程序,碰到页面跳转的问题,总结一下页面之间跳转的方式 一.wx.navigateTo(OBJECT) 这是最普遍的一种跳转方式,其官方解释为:"保留当前页面,跳转到应用内的某个页面" 类似于html中的 window.location.href=" "eg: wx.navigateTo({ url: 'test?id=1' })实际效果如下: 小程序中左上角有一个返回箭头,可返回上一个页面 也可以通过方法  wx.nav

小贝_mysql select5种子句介绍

mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理解where子句 理解select 列1.列2- fromtable where where子句 a. 把where子句看成表达式.到table中查询满足表达式成立的行 b. 上述查询语句的运行顺序.先找到表table后.再运行where子句.满足表达式后进行展示. c.比較运算符和逻辑运算符 2.

判断系统是大端还是小端的两种方法

#include <iostream> #include <stdio.h> #include <malloc.h> #include <string.h> using namespace std; //判断系统是大端还是小端:通过将&int转换为char* int fun() { int num = 1; // *((char*)&num)获得num的最低字节,为0x00,说明是大端 为0x01,说明是小端 return *((char*)

Hadoop合并小文件的几种方法

1.Hadoop HAR 将众多小文件打包成一个大文件进行存储,并且打包后原来的文件仍然可以通过Map-Reduce进行操作,打包后的文件由索引和存储两大部分组成: 缺点: 一旦创建就不能修改,也不支持追加操作,还不支持文档压缩,当有新文件进来以后,需要重新打包. 2.SequeuesFile 适用于非文体格式,可作小文件容器,并可压缩: 3.CombineFileInputFormat 将多个文件合并成一个split作为输入,减少map输入与HDFS块的耦合: 4.Java代码实现,使用HDF

关于浮动清除的一些小感悟,4种方法清除浮动

如何脱离标准文档流,css中给了三种方法,使一个元素脱离标准文档流. 1.浮动.   2.绝对定位.  3.固定定位. 一. 什么是浮动呢?定义这样说:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 其实也就是把快级元素变成能和别的快级并排成一行. 二.浮动的的元素有4点特性: 1.浮动元素会脱离标准文档流,已经不区分快和行了. 2.浮动的元素会互相贴靠. 3.浮动的元素有“字围”的效果. 4.收缩.一个浮动的元素,如果没有设置width,那么将自动收缩为文字的宽

心急的C小加(两种解法)

心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大 于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间.因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做 吗? 输入 第一行是一个整数T(1<T<1500),表示输入数据一共有T组. 每组测试数据的第一行是一个整数N(1

微信小程序开发初探

一.关于微信小程序 1.1 小程序诞生的背景 张小龙说道: (1)一切以用户价值为依归→用户是微信的核心,所以微信中没有很多与客户无关的功能,比如QQ中的乱七八糟一系列东西. (2)让创造发挥价值→所有围绕微信的创造比如公众号都应该发挥其应有的价值. (3)用完即走的高效服务→这一点就厉害了word天,微信要打造一个以微信为中心的生态链,不以绑定用户为目标.比如生活中有一些不太常用的app,我们可能一年也使用不了几次,但是有时候就需要用到,微信就想要提供这样一个平台,让你可以在微信中使用这中所谓