在C#控制台应用程序中使用嵌套的for循环从右上角到左下角绘制对角线

我将矩阵5x5填充为零。

我将使用嵌套的for循环从右上角到左下角绘制对角线。

预期输出

0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0

我的输出

1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
到目前为止,我的代码:
using System;

namespace practice_04
{
class Program
{
    static void Main(string[] args)
    {
        int[,] array = new int[5,5];
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                array[i,j] = (i == j) ? 1 : 0;

                Console.Write($"{array[i,j]} ");
            }
            Console.WriteLine(Environment.NewLine);
        }
    }
}
}

我不知道如何将输出反转为预期输出

beyondlover 回答:在C#控制台应用程序中使用嵌套的for循环从右上角到左下角绘制对角线

只需稍作修改即可解决问题:

array[i,j] = (i == 4 - j) ? 1 : 0;

为了获得更好的代码质量,我建议在初始化代码后进一步在代码下方使用数组大小​​:

for (int i = 0; i < array.GetLength(0); i++)
{
    for (int j = 0; j < array.GetLength(1); j++)

array[i,j] = (i == array.GetLength(0) - 1 - j) ? 1 : 0;
,

您可以像这样打印数组:

i\j 0 1 2 3 4
 0  0 0 0 0 1
 1  0 0 0 1 0
 2  0 0 1 0 0
 3  0 1 0 0 0
 4  1 0 0 0 0

因此,您希望使用i + j == 4而不是i == j

如果您还不确定,i+j的样子如下:

i\j 0 1 2 3 4
 0  0 1 2 3 4
 1  1 2 3 4 5
 2  2 3 4 5 6
 3  3 4 5 6 7
 4  4 5 6 7 8
,

for循环中的一个小错误。附加正确的行:

for (int j = 4; j >= 0; j--)
{
    array[i,j] = (i == j) ? 1 : 0;

    Console.Write($"{array[i,j]} ");
}

然后您的输出将被镜像:

i\j 4 3 2 1 0
 0  0 0 0 0 1
 1  0 0 0 1 0
 2  0 0 1 0 0
 3  0 1 0 0 0
 4  1 0 0 0 0
本文链接:https://www.f2er.com/3139687.html

大家都在问