php打印一个边长为N的实心和空心菱型的方法
本文实例讲述了php打印一个边长为N的实心和空心菱型的方法。分享给大家供大家参考。具体分析如下:
实心菱型计算方法:
$n:边长
$i:当前行,0开始
$rows:总行数
上部
前面空格数=$n-$i-1
字符数=$i*2+1
下部
前面空格数=$i-$n+1
字符数=($rows-$i)*2-1
使用str_pad可以减少for/while等循环
/**
*打印实心菱型
*@param int $n边长,默认5
*@param String$s显示的字符,默认*
*@returnString
*/
functionsolidDiamond($n=5,$s='*'){
$str='';
//计算总行数
$rows=$n*2-1;
//循环计算每行的*
for($i=0;$i<$rows;$i++){
if($i<$n){//上部
$str.=str_pad('',($n-$i-1),'').str_pad('',$i*2+1,$s)."\r\n";
}else{ //下部
$str.=str_pad('',($i-$n+1),'').str_pad('',($rows-$i)*2-1,$s)."\r\n";
}
}
return$str;
}
echo'<xmp>';
echosolidDiamond(5);
echo'</xmp>';
* *** ***** ******* ********* ******* ***** *** *
空心菱型计算方法:
$n:边长
$i:当前行,0开始
$rows:总行数
上部
前面空格数=$n-$i-1
空心的空格数=$i*2+1-2
字符数=$i*2+1-空心的空格数
下部
前面空格数=$i-$n+1
空心的空格数=($rows-$i)*2-1-2
字符数=($rows-$i)*2-1-空心的空格数
/**
*打印空心菱型
*@param int $n边长,默认5
*@param String$s显示的字符,默认*
*@returnString
*/
functionhollowDiamond($n=5,$s='*'){
$str='';
//计算总行数
$rows=$n*2-1;
//循环计算每行的*
for($i=0;$i<$rows;$i++){
if($i<$n){//上部
$tmp=$i*2+1;
$str.=str_pad('',($n-$i-1),'').str_pad(str_pad('',$tmp-2,'',STR_PAD_BOTH),$tmp,$s,STR_PAD_BOTH)."\r\n";
}else{ //下部
$tmp=($rows-$i)*2-1;
$str.=str_pad('',($i-$n+1),'').str_pad(str_pad('',$tmp-2,'',STR_PAD_BOTH),$tmp,$s,STR_PAD_BOTH)."\r\n";
}
}
return$str;
}
echo'<xmp>';
echohollowDiamond(5);
echo'</xmp>';
* ** * * * * * * * * * * ** *
希望本文所述对大家的php程序设计有所帮助。