以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素和

编写一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)
例如,矩阵为:
3 0 0 3
2 5 7 3
1 0 4 2
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

一个简单的实现:

#include <stdio.h>

int main(void){
    
    int m = 3;
    int n = 4;
    int i = 0;
    int matrix [m*n];
    int sum = 0;
   
    while(i<m*n){
        scanf("%d",&matrix[i]);
        i++;
    }
    
    for(i=0;i<m*n;i++){
        printf("matrix[%d]=%d\n",i,matrix[i]);
    } 
    
    /*
    3 0 0 3
    1 0 4 2 
    
     3 2 1
     
     3 3 2
    
    */ 
    
    //累积矩阵最上层的和 
    for(i=0;i<n;i++){
        sum+=matrix[i];
    }
    printf("最上层:%d\n",sum); 
    
    //累积矩阵最左边的和 
    for(i=0;i<m;i++){
        sum+=matrix[i*n];
    }
    printf("最左边:%d\n",sum); 
    
    //累积矩阵最下层的和 
    for(i=0;i<n;i++){
        sum+=matrix[(m-1)*n+i];
    }
    printf("最下边:%d\n",sum); 
    
    //累积矩阵最右边的和 
    for(i=0;i<m;i++){
        sum+=matrix[(n-1)+i*n];
    }
    printf("最右边:%d\n",sum); 
    
    
    //依次减去重复计算了一次的四个定点的值:左上角,右上角,左下角,右下角 
    sum-= (matrix[0]+matrix[n-1]+matrix[(m-1)*n]+ matrix[m*n-1]); 
    
    printf("%dx%d矩阵的外围和是:%d\n",m,n,sum); 
    
    return 0;
}