将矩阵传递给函数并计算每一行的总和

时间:2018-11-25 20:15:33

标签: c matrix

如何将矩阵传递给函数并计算每一行的总和? 这是我创建的功能,但是 我被困在这里。请帮助大家。

#include <stdio.h>
#define row 4
#define col 4

int Schum(int A[row][col]){
    int sum, i, j;
    for (i=0; i<row; i++){
        sum = 0;
        for (j=0; j<col; j++){
            sum += A[i] [j];  
        }
    } 
    return sum;  
}

int main(){
    int A[row] [col], i, j, sum;
    for (i=0; i<row; i++){
        for (j=0; j<col; j++){
            printf("Enter number in [%d][%d]: ", i, j);
            scanf("%d", &A[i] [j]);
        }
    }

    for (i=0; i < row; i++){
        for(j=0; j < col; j++){
            printf("[%d][%d]: %d\t", i, j, A[i][j]); 
            sum = Schum(A);
        } 
        printf("Sum of row%d: %d\n", i+1, sum);
    }
}

2 个答案:

答案 0 :(得分:1)

您的Schum函数不正确。您无需遍历矩阵的所有元素即可找到给定行的总和。您还错误地为main()中的矩阵的每个元素调用了Schum函数。每行只能调用一次。

答案 1 :(得分:1)

这里是一个。传递要累加其列的行号,并在列迭代之外但在行迭代内部调用Schum函数就足以实现目标。

#include <stdio.h>
#define row 4
#define col 4

int Schum(int A[row][col], int rowParam){
  int sum = 0, j;
  for (j = 0; j < col; j++){
    sum += A[rowParam][j];  
  }

  return sum;
}

int main(){ 
  int A[row][col], i, j, sum;

  for (i=0; i < row; i++){
    for (j=0; j < col; j++){
      printf("Enter number in [%d][%d]: ", i, j);
      scanf("%d", &A[i][j]);
    }
  }

  for (i=0; i < row; i++){
    for(j=0; j < col; j++){
      printf("[%d][%d]: %d\t", i, j, A[i][j]); 
    } 

    sum = Schum(A, i);
    printf("Sum of row%d: %d\n", i+1, sum);
  }
}