我有一个简单的任务来转发方形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 :(得分:6)
这是因为您正在执行从for
到0
的{{1}}个循环。所以你要做两次转置。
例如,对于5
和i=0
,您将j=1
转换为a[0,1]
,将a[1,0]
和i=1
转换为{{1}的值}}和j=0
回到原来的位置。
您可以将内部a[1,0]
从a[0,1]
设为for
,因此这些职位只会被交换一次。
0
答案 1 :(得分:1)
第三个循环交换数组的两个对角线,你必须只交换一半的元素:
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < i; j++)
{
double temp = a[i, j];
a[i, j] = a[j, i];
a[j, i] = temp;
}
}
答案 2 :(得分:0)
在交换循环中,您需要更改内部循环限制以避免双重交换问题。更改:
$(window).load(function(){
$(".header > *").hide().fadeIn("slow");
});
至
for(j = 0; j < 5; j++)