我如何获得此输出? (For循环)

时间:2017-09-30 04:04:11

标签: c# loops

我试图获得最终结果:

  

1
  2 1
  3 2 1
  4 3 2 1

这是我到目前为止所尝试的并且我有形状,但我需要减少数量。我该如何解决这个问题?我知道我必须在某处减去但它会影响形状。

public static void DrawDiamond(int size)
{
    int i, j;
    for (i = 1; i <= size; i++)
    {
        for (j = 1; j < i; j++)
        {
           Console.Write(j);

        }

        Console.WriteLine();
    }

}

我目前的结果是:

  

1
  1 2
  1 2 3
  1 2 3 4

4 个答案:

答案 0 :(得分:1)

Hello JeremyM,

逻辑

int i, j;
for (i = 1; i <= no_of_row; i++)
{
    for (j = i; j>=1; j--)
    {
       Console.Write(j);

    }
    Console.WriteLine();
}

解决方案

using System.IO;
using System;

class Program
{
    static void Main()
    {
       int i, j;
        for (i = 1; i <= no_of_row; i++)
        {
            for (j = i; j>=1; j--)
            {
               Console.Write(j);

            }

            Console.WriteLine();
        }
    }
}

例如:
no_o_rows = 5输出,

1
21
321
4321
54321

我希望我的回答很有帮助 如果有任何疑问请评论。

答案 1 :(得分:0)

i-j + 1的打印值仅为j

答案 2 :(得分:0)

或者如果您更喜欢与Linq合作:

Enumerable.Range(1, 5).ToList().ForEach(x =>
{
    Console.WriteLine();
    Enumerable.Range(1, x).Reverse().ToList().ForEach(y => Console.Write(y));
});

产生:

1
21
321
4321
54321

答案 3 :(得分:0)

这也有效:

Console.WriteLine(String.Join(Environment.NewLine,
    Enumerable
        .Range(1, 4)
        .Select(x => String.Join(" ", Enumerable.Range(1, x).Reverse()))));

我明白了:

1
2 1
3 2 1
4 3 2 1