我有一个简单的任务来转发方形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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为你既执行for从环路0到5.所以你要做两次转置.
例如,对于i=0和j=1你转置a[0,1]with a[1,0]和when i=1以及j=0值a[1,0]并a[0,1]返回其原始位置.
你可以让内部for的0到i,这样的位置被交换只是一个时间.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |