c++1. (算法设计题) 设计一个算法,求二维数组两条对角线上的元素之和
时间: 2024-10-25 19:14:51 浏览: 40
在C++中,你可以通过遍历二维数组并分别计算主对角线和副对角线上的元素之和来实现这个算法。这里是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
int sumDiagonals(int arr[][N], int n) {
// 主对角线之和
int mainDiagonalSum = 0;
for (int i = 0; i < n; ++i) {
mainDiagonalSum += arr[i][i];
}
// 副对角线之和
int secondaryDiagonalSum = 0;
if (n > 1) { // 如果数组不是单元素,才有副对角线
for (int i = 0; i < n; ++i) {
secondaryDiagonalSum += arr[i][n - 1 - i]; // 注意索引调整,从右上到左下
}
}
return mainDiagonalSum + secondaryDiagonalSum;
}
// 测试函数
int main() {
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Main diagonal sum: " << sumDiagonals(arr, n) << endl;
cout << "Secondary diagonal sum: " << sumDiagonals(arr, n) << endl;
return 0;
}
```
在这个例子中,`sumDiagonals` 函数接受一个二维整数数组 `arr` 和其行数 `n`,然后分别计算两者的和并返回。如果数组只有一个元素,则不存在副对角线。
阅读全文