二维数组的转置c#语言
时间: 2023-12-09 07:36:57 浏览: 263
以下是C#语言中实现二维数组转置的方法:
```csharp
int[,] arr = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
int[,] newArr = new int[arr.GetLength(1), arr.GetLength(0)]; // 新数组的行列数与原数组相反
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
newArr[j, i] = arr[i, j]; // 转置
}
}
```
以上代码中,我们首先定义了一个3行4列的二维数组arr,并初始化了其中的元素。然后,我们定义了一个新的二维数组newArr,其行数等于arr的列数,列数等于arr的行数。接着,我们使用两个for循环遍历arr中的每个元素,并将其转置后存储到newArr中。最终,newArr就是arr的转置矩阵。
相关问题
二维数组转置C#,不使用方法
在C#中,如果你想要对二维数组进行转置,但是不想使用内置的Array类提供的ToTwoDimensionalArray或其他类似方法,你可以手动遍历并创建一个新的二维数组。这是一个简单的示例:
```csharp
public static int[,] TransposeWithoutMethod(int[,] input)
{
// 获取原数组的行数和列数
int rows = input.GetLength(0);
int cols = input.GetLength(1);
// 创建新的转置数组,大小为列数 x 行数
int[,] transposed = new int[cols, rows];
// 遍历原数组并填充转置数组
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
transposed[j, i] = input[i, j];
}
}
return transposed;
}
```
在这个例子中,我们首先获取输入数组的尺寸,然后创建一个新的数组并初始化其元素为原数组对应位置的值。最后返回这个转置后的数组。
c#简单实现二维数组和二维数组列表List<>的转置
下面是C#代码简单实现二维数组和二维数组列表List<>的转置:
```csharp
// 二维数组的转置
int[,] arr = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int[,] result = new int[arr.GetLength(1), arr.GetLength(0)];
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
result[j, i] = arr[i, j];
}
}
// 二维数组列表List<>的转置
List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 1, 2, 3 });
list.Add(new List<int> { 4, 5, 6 });
list.Add(new List<int> { 7, 8, 9 });
List<List<int>> transposedList = new List<List<int>>();
for (int i = 0; i < list[0].Count; i++)
{
List<int> row = new List<int>();
for (int j = 0; j < list.Count; j++)
{
row.Add(list[j][i]);
}
transposedList.Add(row);
}
```
以上代码可以将一个3x3的二维数组和一个包含3个长度为3的List的二维数组列表进行转置操作,得到的结果如下:
```csharp
// 二维数组转置后的结果
2 5 8
1 4 7
3 6 9
// 二维数组列表转置后的结果
1 4 7
2 5 8
3 6 9
```
阅读全文