有一个n×n的矩阵,求两个对角线元素的和
时间: 2024-05-10 18:16:15 浏览: 90
一个n×n的矩阵有两条对角线,一条从左上角到右下角,另一条从右上角到左下角。我们可以使用两个变量来分别记录这两条对角线的和,然后遍历矩阵即可。具体实现可以参考以下代码:
```python
def diagonal_sum(matrix):
n = len(matrix)
diagonal1_sum = 0
diagonal2_sum = 0
for i in range(n):
diagonal1_sum += matrix[i][i]
diagonal2_sum += matrix[i][n-i-1]
return diagonal1_sum, diagonal2_sum
```
其中,`matrix`是一个n×n的矩阵,`diagonal1_sum`和`diagonal2_sum`分别是两条对角线的和。我们使用`range(n)`来遍历矩阵的行和列,然后通过`matrix[i][i]`和`matrix[i][n-i-1]`来访问两条对角线上的元素。最后,返回两条对角线的和即可。
相关问题
C语言 有一个n×n的矩阵,求两个对角线元素的和
可以使用如下的C语言代码来求解:
```c
#include <stdio.h>
int main() {
int n, i, j, sum1 = 0, sum2 = 0;
printf("请输入矩阵的大小n:");
scanf("%d", &n);
int a[n][n];
// 读入矩阵元素
printf("请输入矩阵中的元素:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
// 求对角线元素的和
for (i = 0; i < n; i++) {
sum1 += a[i][i];
sum2 += a[i][n-i-1];
}
printf("矩阵对角线元素的和为:%d和%d\n", sum1, sum2);
return 0;
}
```
首先,我们需要输入矩阵的大小n,并创建一个二维数组a来存储矩阵元素。然后,我们通过两个循环读入矩阵元素。
接下来,我们使用两个循环分别累加主对角线和副对角线上的元素值。主对角线上的元素坐标为a[i][i],而副对角线上的元素坐标为a[i][n-i-1],其中n-i-1是副对角线上元素的列坐标。
最后,输出两个对角线元素的和即可。
c++求一个N*N矩阵对角线元素之和。
在C++中,求一个N*N矩阵对角线元素之和可以通过两层循环来遍历矩阵,每次比较当前元素的位置是否在对角线上(即行索引等于列索引,或者行索引加列索引等于矩阵的大小减1)。以下是详细的步骤:
```cpp
#include <iostream>
using namespace std;
int sumDiagonalElements(int N, int matrix[N][N]) {
int sum = 0;
for (int i = 0; i < N; i++) {
int j = i; // 对于对角线,列索引与行索引相等
// 或者 j = N - 1 - i; // 对于右上方对角线,从最后一行开始向左上方移动
while (j >= 0 && j < N) {
sum += matrix[i][j]; // 将对角线元素累加
j++;
}
}
return sum;
}
int main() {
int size;
cout << "Enter the size of the square matrix: ";
cin >> size;
int matrix[size][size];
cout << "Enter the elements of the matrix: \n";
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cin >> matrix[i][j];
}
}
int diagonalSum = sumDiagonalElements(size, matrix);
cout << "Sum of diagonal elements: " << diagonalSum << endl;
return 0;
}
```
在这个程序里,`sumDiagonalElements()`函数接收矩阵的大小和二维数组作为参数,通过双指针法遍历对角线并计算和。注意,这个例子假设你要计算的是主对角线和从上到下的右上方对角线,如果你想只计算其中一个方向,可以删除另一个循环。
阅读全文