C++计算二维数组对角线元素之和
C++计算二维数组对角线元素之和
本篇博客将介绍如何使用C++语言计算二维数组(矩阵)两条对角线元素之和。
问题描述:
给定一个 n * n 的二维数组(矩阵),计算其两条对角线元素之和。需要注意的是,当 n 为奇数时,中心元素会重复计算,需要避免重复。
代码示例:
#include <iostream>
using namespace std;
int main() {
int arr[50][50] = { 0 };
int n;
cin >> n;
// 输入矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
int sum1 = 0, sum2 = 0; // 分别存储两条对角线元素之和
int mid = n / 2; // 计算中心元素索引
// 计算对角线元素之和
for (int i = 0; i < n; i++) {
sum1 += arr[i][i]; // 主对角线
sum2 += arr[i][n-1-i]; // 副对角线
}
// 如果是奇数阶矩阵,减去重复计算的中心元素
if (n % 2 == 1) {
sum2 -= arr[mid][mid];
}
int sum = sum1 + sum2; // 计算总和
cout << sum << endl;
return 0;
}
代码解释:
-
输入矩阵: 首先,我们定义一个二维数组
arr来存储矩阵,并通过用户输入获取矩阵的大小和元素值。 -
计算对角线元素之和:
- 使用
sum1和sum2分别存储两条对角线元素之和。 - 通过循环遍历矩阵,累加对角线元素的值。
- 主对角线元素索引满足
i == j,副对角线元素索引满足i + j == n - 1。
- 使用
-
处理中心元素重复计算问题:
- 当矩阵阶数
n为奇数时,中心元素会被计算两次。 - 我们通过判断
n的奇偶性,如果是奇数,则从sum2中减去中心元素的值。
- 当矩阵阶数
-
输出结果: 最后,我们将两条对角线元素之和相加得到最终结果,并输出。
总结:
通过以上代码,我们可以方便地计算出二维数组两条对角线元素之和,并且解决了奇数阶矩阵中心元素重复计算的问题。该算法简单易懂,代码简洁明了,方便读者理解和使用。
原文地址: http://www.cveoy.top/t/topic/ck3w 著作权归作者所有。请勿转载和采集!