【问题标题】:Get first col in matrix获取矩阵中的第一个列
【发布时间】:2021-12-08 23:13:57
【问题描述】:

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

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

【问题讨论】:

    标签: c matrix


    【解决方案1】:
    for (i = 0; i < n; i ++) {
        firstCol += a[i][0];
    }
    

    【讨论】:

      【解决方案2】:

      使用函数。试着让它们更通用一点。这将返回任何大小数组的第一列的总和。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        相关资源
        最近更新 更多