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

C++求解n阶方阵对角线元素之和(避免重复计算)

根据题目要求,需要计算n阶方阵两条对角线元素之和,并且同一元素(即中心元素,当n为奇数时)不要重复计算。下面给出C++实现代码。 💻 **C++代码实现** ```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]; } } long long sum = 0; for (int i = 0; i < n; i++) { sum += matrix[i][i]; // 主对角线 sum += matrix[i][n - 1 - i]; // 副对角线 } if (n % 2 == 1) { // 如果n为奇数,中心元素被加了两次,需减去一次 sum -= matrix[n / 2][n / 2]; } cout << sum << endl; return 0; } ``` 🔍 **代码说明** - 使用二维数组存储方阵,大小最大为100×100。 - 主对角线元素坐标满足 `i == j`,副对角线元素坐标满足 `j == n-1-i`。 - 在循环中同时累加两条对角线元素,但这样中心元素(当`n`为奇数时,坐标为`(n/2, n/2)`)会被重复计算两次,因此最后减去一次。 - 结果用`long long`类型存储,防止溢出(元素最大32767,n最大100,总和不超过约32767*200 ≈ 6.5e6,int足够,但long long更安全)。 🧪 **测试示例** 输入: ``` 3 1 2 3 4 5 6 7 8 9 ``` 输出: ``` 25 ``` 解释:主对角线 1+5+9=15,副对角线 3+5+7=15,总和30,减去中心5,得25。 ######[AI问答 | 476点数解答 | 2026-08-21 19:18:57]

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