7-55 矩阵运算 (20 分)

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址: https://blog.csdn.net/qq_40268826/article/details/83050890

7-55 矩阵运算 (20 分)

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35
#include <stdio.h>

int main ()  {
    int n,sum=0,i,t;
    scanf("%d",&n);
    int a[n][n];
    for ( i=0; i<n; i++){   //输入并求和
        for ( t=0; t<n; t++){
            scanf ("%d",&a[i][t]);
            sum += a[i][t]; 
        }
    }
    
    t = n;
    for ( i=0; i<n; i++){  //减去副对角线
        sum -= a[i][--t];
    }
    for ( i=1; i<n; i++){ //减去其他成分
        sum -= a[i][n-1];
        sum -= a[n-1][i];
    }
        sum += a[n-1][n-1]; //最后一个数被重复减去了
    printf("%d",sum);
    
    return 0 ; 
}

或者:

#include <stdio.h>

int main ()  {
    int n,sum=0,i,t;
    scanf("%d",&n);
    int a[n][n];
    for ( i=0; i<n; i++){   //输入并求和
        for ( t=0; t<n; t++){
            scanf ("%d",&a[i][t]);
            if ( i!=n-1 && t!=n-1 && i+j!=n-1)    //i==n-1是最后一行,t==n-1是最后一列,i+j==n-1是右对角线
                sum += a[i][t]; 

        }
    }
    
    printf("%d\n", sum);
    return 0 ; 
}

猜你喜欢

转载自blog.csdn.net/qq_40268826/article/details/83050890