求二维数组中对角线元素之和及副对角线元素之和其中行和列的数值不同
时间: 2024-09-11 12:17:46 浏览: 38
要计算二维数组(矩阵)中主对角线和副对角线的元素之和,你可以遍历矩阵,分别检查当前元素是否位于主对角线上(即行索引等于列索引)或副对角线上(即行索引加列索引等于数组的宽度减一)。以下是一个C++示例:
```cpp
#include <iostream>
int sumDiagonals(int arr[][N], int rows, int cols) {
int mainDiagonalSum = 0;
int secondaryDiagonalSum = 0;
// 主对角线
for (int i = 0; i < rows && i < cols; ++i) {
mainDiagonalSum += arr[i][i];
}
// 副对角线
if (rows >= cols) {
for (int i = 0; i < cols; ++i) {
secondaryDiagonalSum += arr[rows - 1 - i][i];
}
} else { // 如果行数小于列数,则取反向副对角线
for (int i = 0; i < rows; ++i) {
secondaryDiagonalSum += arr[i][cols - i];
}
}
return std::make_pair(mainDiagonalSum, secondaryDiagonalSum);
}
int main() {
int N = 4; // 替换为实际的矩阵大小
int arr[N][N] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
auto result = sumDiagonals(arr, N, N);
std::cout << "Main diagonal sum: " << result.first << "\n";
std::cout << "Secondary diagonal sum: " << result.second << "\n";
return 0;
}
```
这里假设`arr`是一个`N x N`的二维数组。`sumDiagonals`函数接收这个数组以及行和列的数量,然后返回一个包含两个整数的pair,分别代表主对角线和副对角线的元素之和。
阅读全文