C#求任意方阵每行、每列、两对角线上元素之和
时间: 2024-12-15 21:22:03 浏览: 3
在C#中,如果你有一个二维数组表示矩阵,可以编写函数来计算每一行、每一列以及两个对角线上的元素之和。下面是一个例子,假设矩阵是一个二维整型数组`matrix`:
```csharp
using System;
public class MatrixSums
{
public static void CalculateSums(int[,] matrix)
{
// 初始化变量存储总和
int rowSum = 0, colSum = 0, diagSum1 = 0, diagSum2 = 0;
// 遍历每一行
for (int i = 0; i < matrix.GetLength(0); i++)
{
// 求行和
rowSum += matrix[i, i];
// 对角线1(从左上到右下)
if (i <= matrix.GetLength(1) - 1)
diagSum1 += matrix[i, i];
// 计算列和(假设矩阵是对称的)
colSum += matrix[i, matrix.GetLength(1) - i - 1];
}
// 对角线2(从右上到左下)需要额外处理,因为不是所有矩阵都是对称的
if (matrix.GetLength(0) > matrix.GetLength(1))
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (j <= matrix.GetLength(0) - 1)
diagSum2 += matrix[j, j];
}
}
Console.WriteLine("Row sums: {0}", rowSum);
Console.WriteLine("Column sums: {0}", colSum);
Console.WriteLine("Diagonal sum 1 (left-to-right): {0}", diagSum1);
Console.WriteLine("Diagonal sum 2 (right-to-left if symmetric): {0}", diagSum2);
}
public static void Main()
{
// 用一个示例矩阵测试函数
int[,] exampleMatrix = new int[,] {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
CalculateSums(exampleMatrix);
}
}
```
在这个例子中,我们首先初始化四个变量来存储总和。接着遍历每一行,计算行和,以及对角线1的和(如果矩阵高度大于宽度)。对于列和,因为我们假设矩阵是对称的,所以可以直接从当前行找到对应位置的元素。最后,检查对角线2的情况,如果矩阵更宽,则单独处理。
阅读全文