获取矩阵中的第一个列

Get first col in matrix

我有一个简单的程序,可以获取矩阵的主对角线和反对角线之和。然后它得到 matrix.For 示例的第一列和最后一列的总和:

1 2 3
4 5 6  --> The matrix
7 8 9

md = 1 + 5 + 9 = 15
ad = 7 + 5 + 3 = 15
lastCol = 3 + 6 + 9 = 18
firstCol = 1 + 4 + 7 = 12

我怎样才能得到方阵的 firstCol 的总和?
这是我的代码:

int main(){
    int n;
        scanf("%d",&n);
        int i,j,a[n][n],firstCol=0,lastCol=0,md=0,ad=0;
        for(i = 0;i <n;i++){
            for(j=0;j<n;j++){
                scanf("%d",&a[i][j]);
            }
        }
        for(i = 0;i <n;i++){
            for(j=0;j<n;j++){
                if(i==j){
                    md+=a[i][j];
                }
                if(i+j==n-1){
                    ad+=a[i][j];
                }
            }
        }
        for(i=0;i<n;i++){
                lastCol+=a[i][n-1];
        }
}
for (i = 0; i < n; i ++) {
    firstCol += a[i][0];
}

使用函数。尝试使它们更具通用性。这将 return 任何大小数组的第一列的总和。

long long int sumFirstCol(size_t rows, size_t cols, int (*array)[cols])
{
    long long int result = 0;
    if(array && rows && cols)
    {
        for(size_t row = 0; row < rows; row++)
        {
            result += array[row][0];
        }
    }
    return result;
}

int main(void)
{
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},};

    printf("%lld\n", sumFirstCol(3, 3, matrix));
}