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/>";
} ?>