通过有条件地循环打印“x”来创建 X 形状

问题描述 投票:0回答:3

这是我想要的输出: 我无法得到这个我已经尝试了很多次但都是徒劳,所以这就是我问的原因

  x               x  
    x           x    
      x       x      
        x   x         
          x          
        x   x        
      x       x      
    x           x    
  x               x  

但我明白了

  x                x  
    x            x    
      x        x      
        x    x        
          xx          
          xx          
        x    x        
      x        x      
    x            x    
  x                x  



for($i=1;$i<=5;$i++)
{
    echo  str_repeat("&nbsp;&nbsp;",$i);
    echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i)."x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

for($i=5;$i>=1;$i--)
{

    echo  str_repeat("&nbsp;&nbsp;",$i);
    echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i)."x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

谁能帮忙解决一下吗?

php loops shapes
3个回答
2
投票

您可以组合所有彼此相邻的

str_repeats
,并进行一些算术简化。然后,您需要在手臂中的
x
之间添加额外的空格,并在中间写一条带有单个
x
的行。

for($i=1;$i<=4;$i++)
{
    echo  str_repeat("&nbsp;",2*$i)."x".str_repeat("&nbsp;",19 - 4*$i)."x<br>";
}
echo str_repeat("&nbsp;", 10) . "x<br>";
for($i=4;$i>=1;$i--)
{
    echo  str_repeat("&nbsp;",2*$i)."x".str_repeat("&nbsp;",19 - 4*$i)."x<br>";
}

第二个

&nbsp;
之后也不需要
x

输出:

  x               x
    x           x
      x       x
        x   x
          x
        x   x
      x       x
    x           x
  x               x

0
投票

您可以在一个循环中执行此操作,只需计算一半(例如左侧)并将其镜像到另一侧(除了 c 的中心)

$size = 9;
$space = "&nbsp;&nbsp;";

$center = ceil($size/2);
$maxPost = abs($center - $size);
for ($i=0; $i<$size; $i++) {
    $post = abs($center + $i - $size);
    $pre = $maxPost - $post;

    echo str_repeat($space,$pre);
    echo "x ";
    echo str_repeat($space, $post);

    if ($post > 0) {
        echo str_repeat($space, $post-1);
        echo "x ";
    }
    echo str_repeat($space, $pre) . "<br>";
}

查看这里

x               x  
  x           x    
    x       x      
      x   x         
        x          
      x   x        
    x       x      
  x           x    
x               x  

0
投票

试试这个

for($i=1;$i<=5;$i++)
{
    echo  str_repeat("&nbsp;&nbsp;",$i);
    if($i==5)
    {
        echo  "x"."<br>";
    }
    else
    {
        echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i-1)."&nbsp;x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
    }   
}

for($i=4;$i>=1;$i--)
{
        echo  str_repeat("&nbsp;&nbsp;",$i);
        echo  "x".str_repeat("&nbsp;&nbsp;",5-$i)."". str_repeat("&nbsp;&nbsp;",5-$i-1)."&nbsp;x".str_repeat("&nbsp;&nbsp;",$i)."<br>";
}

输出:

  x               x  
    x           x    
      x       x      
        x   x        
          x
        x   x        
      x       x      
    x           x    
  x               x 
© www.soinside.com 2019 - 2024. All rights reserved.