如何将此C程序转换为计算每行总和及其总和的函数?

时间:2018-08-22 17:02:49

标签: c function matrix

我的解决方案: 我正在CodeBlocks中运行此程序。它不起作用,它显示:

       //error: array type has incomplete elements type 'int[]'
      //warning: return type of 'main' is not 'int'

我想要执行计算每行总和及其总和的功能。该解决方案不起作用,因为它在函数声明中显示了错误。

   //function declaration
  void findSumEachRowAndTotalSum(int a[][], int c, int r){
     int i, j, rowSum, totalSum;
     //ask the user to give elements of rows
     for(i=0; i<c; i++){
       printf("\nGive elements of row %d:\n", i+1);
        for(j=0; j<r; j++)
        scanf("%d", &a[i][j]);
     }
   totalSum = 0;
   for(i=0; i<c; i++){
     rowSum = 0;
     for(j=0; j<r; j++){
     //calculates the sum of each row and total sums
      rowSum = rowSum + a[i][j];
      totalSum = totalSum + a[i][j];
   }
   //displays sum of each row on the screen
  printf("\nSum of row %d is %d", i+1, rowSum);
 }
  //displays the total sum of all rows on the screen
printf("\nTotal sum is %d\n", totalSum);
}

//main function
void main(void){
  int col, row, m[50][50], i, j;
  //...
  //function call
  findSumEachRowAndTotalSum(a,c,r);

}

2 个答案:

答案 0 :(得分:3)

该错误是由于函数a的参数findSumEachRowAndTotalSum的定义引起的:

void findSumEachRowAndTotalSum(int a[][], int c, int r){

当一个以上维度的数组是函数的参数时,只允许将第一维度留为空白。所有其他必须指定。

由于您似乎在使用cr作为维,因此需要首先提供这些参数,然后再将它们用作数组的维:

void findSumEachRowAndTotalSum(int c, int r, int a[c][r]){

然后您将这样调用函数:

findSumEachRowAndTotalSum(50, 50, m);

关于警告,必须定义main函数以返回类型int,并且您需要随后返回一个值:

int main(void){
   ...
   return 0;    
}

答案 1 :(得分:0)

@Osiris,您必须发表评论作为答案。没错,@ ArselDoe可能错误地忽略了main()中为数组指定的名称。

@ArselDoe,您已将标识符为m[][]的数组声明为,但已将a作为参数传递给函数调用。更改此设置将修复错误。