求n*n矩阵对角线上元素之和。

本文展示了如何计算给定矩阵对角线上的元素之和,以4*4矩阵为例,通过Java代码实现。

/**
 * 问题:求n*n矩阵对角线上元素之和。
 *
 * @author Administrator
 *
 * 程序如下:(以4*4矩阵为例)
 *
 */
public class Matrix {
   
    public static void main(String args[]){
        int arr[][]={{1,2,3,4},{4,5,6,6},{7,8,9,7},{9,10,11,12}};
        Matrix m=new Matrix();       
        System.out.println(m.getSum(arr));
    }
   
    public int getSum(int a[][]){
        int sum=0;
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a.length;j++){
                if(i==j){
                    sum+=a[i][j];
                }
            }
        }
        return sum;
    }
   
}

运行结果如下:

 

run:
27
成功生成(总时间:0 秒)

计算N*N矩阵对角线元素之和的方法有多种,下面从不同编程语言角度来介绍: ### C语言实现 以下是通过scanf动态输入矩阵元素并计算对角线元素之和的C语言代码,包含主对角线对角线之和(去除重复计算的中心元素): ```c #include <stdio.h> #include <stdlib.h> int main() { int n; printf("输入矩阵数维数:\n"); scanf("%d", &n); int a[100][100]; int i, j; printf("输入N维矩阵:\n"); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]); int num = 0; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if ((i == j) || (i + j == n - 1)) { num += a[i][j]; } // 若n为奇数,中心元素会被重复计算,需要减去一次 if (n % 2 == 1) { num -= a[n / 2][n / 2]; } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", a[i][j]); } printf("\n"); } printf("%d\n", num); return 0; } ``` 该代码首先通过`scanf`获取用户输入的矩阵维数`n`,接着让用户输入矩阵的各个元素,然后使用双重循环遍历矩阵,当元素位于主对角线(`i == j`)或副对角线(`i + j == n - 1`)时将其累加到`num`中。若矩阵边长`n`为奇数,中心元素会被重复计算一次,所以需要减去。最后输出矩阵对角线元素之和 [^1]。 ### Python实现 使用Python可以利用列表循环操作来计算矩阵对角线元素之和: ```python n = int(input("请输入矩阵的维数: ")) matrix = [] print("请输入矩阵元素:") for i in range(n): row = list(map(int, input().split())) matrix.append(row) diagonal_sum = 0 for i in range(n): diagonal_sum += matrix[i][i] diagonal_sum += matrix[i][n - 1 - i] if n % 2 == 1: diagonal_sum -= matrix[n // 2][n // 2] print("矩阵对角线元素之和为:", diagonal_sum) ``` 此代码先让用户输入矩阵的维数`n`,接着逐行输入矩阵元素,将其存储在二维列表`matrix`中。然后使用循环累加主对角线对角线元素的值到`diagonal_sum`。同样,若`n`为奇数,中心元素会被重复计算,需要减去。最后输出对角线元素之和 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值