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

C++求n×n方阵两条对角线元素之和

下面是一个 C++ 程序,用于输入一个 \( n \times n \) 方阵并求两条对角线(主对角线和副对角线)上元素之和。 ```cpp #include <iostream> #include <vector> int main() { int n; std::cout << "请输入方阵的大小 n: "; std::cin >> n; // 使用 vector 动态创建二维数组 std::vector<std::vector<int>> matrix(n, std::vector<int>(n)); std::cout << "请输入方阵的 " << n * n << " 个元素(逐行输入):\n"; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { std::cin >> matrix[i][j]; } } int mainDiagonalSum = 0; // 主对角线之和 int secondaryDiagonalSum = 0; // 副对角线之和 for (int i = 0; i < n; ++i) { // 主对角线:行和列相同 mainDiagonalSum += matrix[i][i]; // 副对角线:行 i,列 n - 1 - i secondaryDiagonalSum += matrix[i][n - 1 - i]; } std::cout << "主对角线元素之和: " << mainDiagonalSum << std::endl; std::cout << "副对角线元素之和: " << secondaryDiagonalSum << std::endl; return 0; } ``` ### 🔍 程序说明 - 用户输入 `n` 和所有矩阵元素。 - 主对角线元素对应 `matrix[i][i]`。 - 副对角线元素对应 `matrix[i][n - 1 - i]`。 - 两个循环合并为一个 `for` 循环,一次遍历即可完成求和。 - 使用 `std::vector` 可以很好地处理动态大小。 ### ⚠️ 注意点 - 输入的方阵必须是方阵(行数等于列数),程序不会做额外校验。 - 如果矩阵极大(如 \( n > 10^4 \)),`vector<vector<int>>` 的内存占用会很大,可以考虑改用一维数组或 `std::valarray`。 - 如果矩阵元素很大(如超过 `int` 范围),请使用 `long long` 存储和。 ######[AI问答 | 530点数解答 | 2026-07-11 09:45:34]

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