首頁  >  文章  >  後端開發  >  用PHP輸出對稱菱形的簡易辦法

用PHP輸出對稱菱形的簡易辦法

WBOY
WBOY原創
2016-07-30 13:29:302337瀏覽

例如輸出一個簡單的菱形或叫做星星塔,首先是最外層控制行號,然後是內層的循環,內層的循環有兩個第一個循環控制,然後第二個循環來控制星星的數量,控制空格的是總共有的行數減去目前的行數for($space=1; $space

下面的程式碼是最簡單的輸出菱形的一部分

//$line 表示行号
//$space = $lines-$line;//每行的前导空格
//$star = 2*$line - 1;//m每行的星星数量

//外层循环控制行号
for($line=1; $line<=$lines; ++$line) {
	//先输出前导空格,控制空格的数量
	for($space=1; $space<=$lines-$line; ++$space) {
		echo &#39;+&#39;;
	}
	//再输出星星,控制星星的数量
	for($star=1; $star<=2*$line-1; ++$star) {
		echo &#39;*&#39;;
	}
	//输出换行
	echo "<br />";
}

涉及到對稱的圖形就大多涉及到數軸例如輸出入讀所示的零星 +用空格來代替

首先一般的方法就是先做一個++的循環輸出上半層,然後再做一個--的循環輸出下半層

比如是這樣

$lines=12;
for ($line=1; $line <=$lines ; $line++) { 
	for ($j=1; $j <= $lines - $line ; $j++) { 
		echo "+";
	}
	for ($i=0; $i < 2*$line-1; $i++) { 
		if ($i == 0 || $i == 2*$line-2) {
			echo "*";
		}else{
			echo "+";
		};
	}
	echo "</br>";
}
$lines=12;
for ($line=$lines-1; $line >=1 ; $line--) { 
	for ($j=1; $j <= $lines - $line ; $j++) { 
		echo "+";
	}
	for ($i=0; $i < 2*$line-1; $i++) { 
		if ($i == 0 || $i == 2*$line-2 || $line == $lines) {
			echo "*";
		}else{
			echo "+";
		};
	}
	echo "</br>";
}
然後還有就是比較巧的方法利用數軸

//123454354
2-101-10123
4(數軸)//4321 3 4(絕對值)想到達到1 2 3 4 5 4 3 2 1的效果先把-4
-3

-20

-1

-3-20 34用絕對值函數轉換然後是432101

201都是等於同一個書 比如說這個 就都等於5對應的偽代碼

for($i=-4; $i<=4; ++$i) {
	echo $i, &#39;+&#39;;
	echo abs($i), &#39;+&#39;;
	echo 5-abs($i);

	echo &#39;<br>';
}
就都等於5對應的偽代碼

for($i=-($lines-1); $i<=$lines-1; ++$i) {
	//计算$line
	$line = $lines - abs($i);
	//先输出前导空格,控制空格的数量
	for($space=1; $space<=$lines-$line; ++$space) {
		echo &#39;+&#39;;
	}
	//再输出星星,控制星星的数量
	for($star=1; $star<=2*$line-1; ++$star) {
		//判断应该输出星星还是空格
		if($star==1 || $star==2*$line-1) {
			echo &#39;*&#39;;
		} else {
			echo &#39;+&#39;;
		}
	}
	//输出换行
	echo "<br />";
}
按照這個思路的話,首先最外層的循環控制的是數軸,也就是說從負數到正數的走一遍for($i=-($lines-1); $i然後裡面的用總的行數減去上面數軸的絕對值$line = $lines - abs($i);

然後下面的額代碼不變就行了

rrreee


版權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了用PHP輸出對稱菱形的簡易辦法,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn