[英]How can I print integer in triangle form
我想打印三角形的整数,看起来像这样
1
121
12321
我尝试了这个,但我没有得到实际的结果
for($i=1;$i<=3;$i++)
{
for($j=3;$j>=$i;$j--)
{
echo " ";
}
for($k=1;$k<=$i;$k++)
{
echo $k;
}
if($i>1)
{
for($m=$i; $m>=1; $m--)
{
echo $m;
}
}
echo "<br>";
}
此代码的输出是:
1
1221
123321
我哪里出错了,请指导我。
另一个整数解:
$n = 9;
print str_pad ("✭",$n," ",STR_PAD_LEFT) . PHP_EOL;
for ($i=0; $i<$n; $i++){
print str_pad ("", $n - $i);
for ($ii=-$i; $ii<=$i; $ii++){
if ($i % 2 != 0 && $ii % 2 == 0)
print "&#" . rand(10025,10059) . ";";
else print $i - abs($ii) + 1;
}
print PHP_EOL;
}
✭
1
1✬1
12321
1❊3✪3✳1
123454321
1✼3✶5❃5❈3✸1
1234567654321
1✾3✯5✿7❉7✫5✷3✶1
12345678987654321
或者如果你已经有了字符串,你可以这样做:
$n = 9; $s = "12345678987654321"; $i = 1;
while ($i <= $n)
echo str_pad ("", $n-$i) . substr ($s,0,$i - 1) . substr ($s,-$i++) . PHP_EOL;
你的代码应该是这样的:
for($i=1;$i<=3;$i++)
{
for($j=3;$j>$i;$j--)
{
echo " ";
}
for($k=1;$k<$i;$k++) /** removed = sign*/
{
echo $k;
}
if($i>=1) /**added = sign*/
{
for($m=$i; $m>=1; $m--)
{
echo $m;
}
}
echo "<br>";
}
尝试这个。
细节:
你的循环是不正确的,因为for($k=1;$k<=$i;$k++)
,这将在检查条件时打印重复的数字,然后再检查等于。 所以删除等号。
添加eqaul符号的原因if($i>=1)
是第一个元素将不会打印,如果不存在等于第一个元素,它将通过for循环从哪里删除等号。
你的输出将是这样的:
1
121
12321
对于所有的x-mas爱好者:
$max = 9; # can be 2 .. 9
for($i = 1; $i <= $max; $i++) {
$line = (str_pad('', $max - $i));
for($ii = 1; $ii <= $i; $ii++) {
$line .= $ii;
}
for($ii = $i-1; $ii > 0; $ii--) {
$line .= $ii;
}
echo $line . PHP_EOL;
}
输出:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
令人惊讶的是现在电脑能够实现的目标! 不是吗?
派对有点晚了,但这是另一种解决方案,它使用带有两个初始化变量的“for”循环和一个基于三元的增量器/减量器。 这是对“for”循环的非正统用法,但它仍然完全有效,可以说代码更优雅,更容易理解。 我选择在每个分号前后添加空格,并省略括号内的所有其他空格,这样就可以更容易地看到“for”循环的三个部分(初始化,条件,增量/减量):
$count = 9;
echo "<pre>";
for ($i=1; $i<=$count; $i++) {
echo str_pad("",$count-$i," ",STR_PAD_LEFT);
for ( $j=1,$up=true ; $j>0 ; $up?$j++:$j-- ) {
echo $j;
if ($j==$i) {$up = false;}
}
echo "<br>";
}
echo "</pre>";
输出:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.