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;
}

代码解释:

  1. 输入矩阵: 首先,我们定义一个二维数组 arr 来存储矩阵,并通过用户输入获取矩阵的大小和元素值。

  2. 计算对角线元素之和:

    • 使用 sum1sum2 分别存储两条对角线元素之和。
    • 通过循环遍历矩阵,累加对角线元素的值。
    • 主对角线元素索引满足 i == j,副对角线元素索引满足 i + j == n - 1
  3. 处理中心元素重复计算问题:

    • 当矩阵阶数 n 为奇数时,中心元素会被计算两次。
    • 我们通过判断 n 的奇偶性,如果是奇数,则从 sum2 中减去中心元素的值。
  4. 输出结果: 最后,我们将两条对角线元素之和相加得到最终结果,并输出。

总结:

通过以上代码,我们可以方便地计算出二维数组两条对角线元素之和,并且解决了奇数阶矩阵中心元素重复计算的问题。该算法简单易懂,代码简洁明了,方便读者理解和使用。

C++计算二维数组对角线元素之和

原文地址: http://www.cveoy.top/t/topic/ck3w 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录