酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++实现方阵两条对角线元素求和

### 🌟解题思路 本题需要计算一个 `n * n` 方阵两条对角线上元素之和,且要避免重复计算两条对角线交点处的元素(当 `n` 为奇数时存在交点)。我们可以通过遍历方阵,分别累加主对角线和副对角线上的元素,最后根据 `n` 的奇偶性判断是否需要减去重复的元素。 ### 💻代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int matrix[100][100]; // 读取方阵元素 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> matrix[i][j]; } } int sum = 0; // 累加主对角线元素 for (int i = 0; i < n; i++) { sum += matrix[i][i]; } // 累加副对角线元素 for (int i = 0; i < n; i++) { sum += matrix[i][n - 1 - i]; } // 若 n 为奇数,减去重复的元素 if (n % 2 == 1) { sum -= matrix[n / 2][n / 2]; } cout << sum << endl; return 0; } ``` ### 📝代码解释 1. **输入处理**:首先读取方阵的阶数 `n`,然后使用二维数组 `matrix` 存储方阵的元素。 2. **主对角线元素求和**:主对角线元素的特点是行索引和列索引相等,因此可以通过 `matrix[i][i]` 来访问主对角线元素,并将其累加到 `sum` 中。 3. **副对角线元素求和**:副对角线元素的特点是行索引和列索引之和等于 `n - 1`,因此可以通过 `matrix[i][n - 1 - i]` 来访问副对角线元素,并将其累加到 `sum` 中。 4. **避免重复计算**:当 `n` 为奇数时,两条对角线的交点处的元素会被重复计算一次,因此需要减去该元素。 5. **输出结果**:最后输出两条对角线元素之和。 ### ⚙️复杂度分析 - **时间复杂度**:$O(n)$,因为只需要遍历方阵的每一行一次。 - **空间复杂度**:$O(n^2)$,主要用于存储方阵的元素。 ### 💡开发建议 - **边界条件检查**:在实际开发中,需要对输入的 `n` 进行边界检查,确保其在 `1` 到 `100` 的范围内。 - **代码可读性**:可以将计算主对角线和副对角线元素之和的逻辑封装成函数,提高代码的可读性和可维护性。 - **错误处理**:在读取输入时,需要处理可能的输入错误,例如输入的元素不是整数等。 ######[AI写代码神器 | 707点数解答 | 2026-05-08 20:49:44]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]