求二维数组中对角线元素之和及副对角线元素之和的所有情况
时间: 2024-09-12 22:06:35 浏览: 53
在C++中,要计算一个二维数组(矩阵)中主对角线(从左上到右下)和副对角线(从右上到左下)的元素之和,你可以使用嵌套循环遍历数组。以下是一个简单的示例代码:
```cpp
#include <iostream>
int sumDiagonal(int arr[rows][cols], int rows, int cols) {
int mainDiagonalSum = 0;
int secondaryDiagonalSum = 0;
// 主对角线
for (int i = 0; i < rows && i < cols; ++i) {
mainDiagonalSum += arr[i][i];
}
// 副对角线
for (int i = 0; i < rows && i < cols - 1; ++i) {
secondaryDiagonalSum += arr[i][cols - 1 - i]; // 注意减去1是因为数组索引是从0开始的
}
return std::make_pair(mainDiagonalSum, secondaryDiagonalSum);
}
int main() {
int rows, cols;
std::cout << "Enter the number of rows and columns: ";
std::cin >> rows >> cols;
int arr[rows][cols];
// 填充二维数组(这里假设你已经有了正确的输入或已知数组)
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << "Element at [" << i << "][" << j << "] : ";
std::cin >> arr[i][j];
}
}
auto result = sumDiagonal(arr, rows, cols);
std::cout << "Main diagonal sum: " << result.first << "\n";
std::cout << "Secondary diagonal sum: " << result.second << "\n";
return 0;
}
```
在这个例子中,`sumDiagonal` 函数接受一个二维数组、行数和列数作为参数,分别计算两个对角线上的元素总和并返回一个包含这两个值的 pair。在 `main` 函数中,你需要根据实际需求获取用户的输入或者提供预定义的数组。
如果你想要处理所有可能的情况,比如动态创建数组,或者处理不同大小的数组,可以稍微修改这个函数,使其接受额外的参数来适应不同的情况。例如,你可以在计算副对角线时添加条件检查,以避免访问越界。
阅读全文