等腰三角形
/*
層數i 星星數 空格數 循環層i
* 1 1 8
* * * 2 3 6
* * * * * 3 5 4
* * * * * * * 4 7 2
* * * * * * * * * 5 9 0
星星數: 2*i-1
空格數: 2*n+1-2*i-1 = 2(n-i)
*/
$n = 5;
for ($i=1; $i<=$n; $i++) { //確定層數
for ($j=1; $j<=$n-$i; $j++) { //每層輸出空格數,因為左右都有空格,所以左右兩邊都是(n-i)即可
echo " "; //我這里有兩個空格
}
for ($j=1; $j<=2*$i-1; $j++) { //每層的星星數
echo "* ";
}
echo "\n"; //每層輸出完后換行
}
如果出現三角形斜曲了,這個是字體的原因導致的。
解決方案:可以每層多輸出1個空格,星星后面也加一個空格。
空心等腰三角形
/*
* 空格
* * 6
* * 4
* * 2
* * * * * * * * * 0
*/
for ($i=1; $i<=$n; $i++) {
for ($j=1; $j<=$n-$i; $j++) { //輸出左側空格
echo " ";
}
for ($j=1; $j<=2*$i-1; $j++) { //輸出星星
if($j==1 || $j==2*$i-1 || $i==$n) { //每行第一個和最后一個輸出星星;最后一行也全部輸出星星
echo "* ";
}else {
echo " "; //中間的輸空格
}
}
echo "\n";
}
頁面顯示效果可能是這樣的:
實際效果看着好像不是那么理想,但其實也是字體原因
可以把輸出的結果復制到編輯器里看 就會發現得到下方的等腰三角形:
原文鏈接:https://www.cnblogs.com/xinxinmifan/p/php_made_triangle.html