我想知道如何用2D数组编写程序来交换主对角线的元素和辅助对角线然后打印结果 像这样
3 2 7
4 5 3
2 8 9
结果如下所示:
7 2 3
4 5 3
9 8 2
答案 0 :(得分:0)
实际上这不是一个非常具体的问题,但由于我没有看到你陷入困境的部分,我会尝试向你解释一个完整的例子:
static int[,] GetDiagonallySwitched(int[,] oldMatrix)
{
var newMatrix = (int[,])oldMatrix.Clone();
for (var i = 0; i < oldMatrix.GetLength(0); i++)
{
var invertedI = oldMatrix.GetLength(0) - i - 1;
newMatrix[i, i] = oldMatrix[i, invertedI];
newMatrix[i, invertedI] = oldMatrix[i, i];
}
return newMatrix;
}
首先,我克隆旧矩阵,因为一些值实际上保持不变。然后我将值从左侧切换到右侧。我用invertedI
来做这个,基本上是我来自另一边 - 所以最后交叉是镜像的,好像线路已经切换了。这适用于任何大小的矩阵。
对于打印:如果你真的想以粗体打印它,你必须在WinForms中使用RTB,但我不认为这是你问题的一部分。否则,您可以使用此代码打印矩阵:
static void Print(int[,] switched)
{
for (var y = 0; y < switched.GetLength(0); y++)
{
for (var x = 0; x < switched.GetLength(1); x++)
Console.Write(switched[y, x]);
Console.WriteLine();
}
}
我希望我能帮到你。