2D阵列不会转发c#

我有一个简单的任务来转发方形2D数组:
(我需要以非常简单的方式进行,没有容器等)
static void Main(string[] args)
    {


        double[,] a = new double[5,5];
        Random random = new Random();

        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 5; j++)
            {
                a[i,j] = random.NextDouble();
            }
        }

        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                Console.Write(a[i,j] + " ");

            }
            Console.WriteLine();
        }


        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                double temp = a[i,j];
                a[i,j] = a[j,i];
                a[j,i] = temp;
            }
        }

        Console.WriteLine("\n\n\n");
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                Console.Write(a[i,j] + " ");

            }
            Console.WriteLine();
        }

        Console.ReadKey();


    }
}

我期待一个反向数组作为输出.但是,我在这里得到了相同的数组.请帮我看看我做错了什么?

解决方法

发生这种情况是因为你正在执行从0到5的for循环.所以你要进行两次转置.

例如,对于i = 0和j = 1,您将[0,1]与[1,0]转置,当i = 1且j = 0时,a [1,0]和[0,1]的值]回到原来的位置.

你可以使内部从0到i,所以位置只交换一次.

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < i; j++)
    {
        double temp = a[i,j];
        a[i,i];
        a[j,i] = temp;
    }
}

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么