PHP代码打印镂空金字塔 代码 分析的过程在后面(64位系统最好打印2个 才能显示正常,否则底边成了旗杆)
<?php
$n=10;
for($i=1; $i<=$n; $i++){
for($k=1; $k<=$n-$i; $k++){
echo " ";
}
for($j=1; $j<=2*($i-1)+1;$j++){
if($i==1||$i==$n){
echo "*";
}else{
if($j==1||$j==2*$i-1){
echo "*";
}else{
echo " ";
}
}
}
echo "<br/>";
}
?>
//打金子字塔练习
//思路:打印如下的金字塔
// * * 第1层 1星 2空格 //层数和星个数$j的关系:($i-1)*2+1=$j
// ** ----> *** 第2层 3星 1空格 //层数和空格数$k的关系:$n-$i=$k
// *** ***** 第3层 5星 0空格
//(半个金字塔--->1个金字塔转变)
//1.要有两个变量 一个控制行,一个控制列
//2.空格 和 *打印的顺序的问题(哪个优先)
//3.要打整个金字塔,先从何处着手,能不能
//先打半个金字塔,再从半个金字塔着手打印整个金字塔
//4.处理空格和星的逻辑关系
//5.代码实施
//---------------半个金字塔代码---------------------
<?php
$n=10;
for($i=1;$i<=$n;$i++){
for($j=1;$j<=($i-1)*2+1;$j++){
//打印星
echo "*"; }
echo "<br/>"; }
?>
//在半个金字塔的基础上,考虑全金字塔的实现,将上面的代码继续改进,
//代码实施分析:
//1.在打印星 之前要先打印空格
//2.加入控制空格的代码
//3.代码实施
整个金字塔代码
<?php
$n=3;
for($i=1;$i<=$n;$i++){
//打印空格
for($k=1;$k<=$n-$i;$k++){
echo" ";
}
//打印星*
for($j=1;$j<=($i-1)*2+1;$j++){
echo "*"; }
echo "<br/>"; //打印完星后输出一个换行
}
?>
//-------------以上代码实现整个金字塔------------------
//在整个金字塔的基础的上打印镂空金字塔
//打印镂空金字塔代码分析 :
//1.正常打印第一层 和 最后一层 的星
//2.除第一层 和 最后一层外 打印每一层的第一个星 和 最后一个星,其它位置打印空格
打印镂空金字塔
<?php $n=10;
for($i=1;$i<=$n;$i++){
//打印空格
for($k=1;$k<=$n-$i;$k++){
echo" "; }
//打印星*
for($j=1;$j<=($i-1)*2+1;$j++){
//第一层 最后一层正常打印星
if($i==1||$i==$n){
echo "*";
}else{
//除第1层最后1层外,其它层第一个星 最后一个星照常给星
if($j==1||$j==2*$i-1){
echo "*";
}else{
echo " ";
}
}
}
//打印完星后输出一个换行
echo "<br/>";
} ?>