2

我编写了这段 C# 来帮助我理解如何使用嵌套的 for 循环来呈现二维数据。

这是输出的样子。

████
███
██
█

我想让它使顶部的 4 个块在底部呈现,基本上以相反的顺序,以便台阶上升。但是控制台窗口只向下渲染,所以传统的想法是不对的。以下是我的代码。

static void Main(string[] args)
    {
        int i = 0;
        int j = 0;

        for (i = 0; i < 4; i++) 
        {
            Console.Write('\n');
            for (j = i; j < 4; j++) 
            {
                Console.Write("█");
            }
        }
        Console.ReadKey();
    }

这就是我希望输出的样子。

    █
   ██
  ███
 ████
4

4 回答 4

4

您需要将循环条件从 inremant反转为 decremant..

for (i = 0; i < 4; i++) 
{
    Console.Write('\n');
    for (j = i; j >= 0; j--) 
    {
        Console.Write("█");
    }
}

输出将是;

在此处输入图像描述

这是一个DEMO.

更新:由于您改变主意,因此需要在每列(列号为i4 - 1次中添加空格。

   public static void Main(string[] args)
    {
        int i = 0;
        int j = 0;
        for ( i = 0; i < 4; i++ )
        {
            for ( j = 0; j < 4; j++ )
            {
                if ( j < 3 - i )
                    Console.Write(" ");
                else
                    Console.Write("█");
            }
            Console.Write('\n');
        }

        Console.ReadKey();
    }

在此处输入图像描述

这是一个演示

于 2013-02-28T16:30:02.593 回答
2
class Program
{
    const int Dimension = 4;

    static void Main(string[] args)
    {
        char[] blocks = new char[Dimension];
        for (int j = 0; j < Dimension; j++)
            blocks[j] = ' ';

        for (int i = 0; i < Dimension; i++)
        {
            blocks[Dimension - i - 1] = '█';

            for (int j = 0; j < Dimension; j++)
                Console.Write(blocks[j]);

            Console.WriteLine();
        }
        Console.ReadKey();
    }
}
于 2013-02-28T16:44:19.493 回答
2

应该:

  for (j = 3 - i; j < 4; j++)
  {
       Console.Write("█");
  }
于 2013-02-28T16:32:46.630 回答
1

最简单的方法是:只需反转您的内部循环条件并减少计数器而不是增加它:

    for (i = 0; i < 4; i++) 
    {
        Console.Write('\n');
        for (j = i; j >= 0; j--) 
        {
            Console.Write("█");
        }
    }
    Console.ReadKey();

返回:

█
██
███
████

对于从右到左的版本:

    for (i = 0; i < 4; i++) 
    {
        for(j = 0; j < 4; j++)
        {
            if(j < 3 - i)
                Console.Write(" ");
            else
                Console.Write("█");
        }
        Console.Write('\n');
    }
    Console.ReadKey();

结果:

   █
  ██
 ███
████
于 2013-02-28T16:27:38.967 回答