计算矩阵中的行总和

时间:2015-01-28 01:47:50

标签: c matrix

行的总和部分无法正常工作。有什么建议? 此外,如果主对角线是i == j,那么相反的对角线是什么?我该如何定义它?

int main (void) {
    int A[5][5];       
    int B[5];
    int x=0,sum=0;
    int n,m,i=0,j;

    printf("Enter rows and columns : \n");
    scanf("%d %d",&n,&m);
    printf("Enter matrix : \n");

    for (i = 0 ; i < n ; i++) {               
        for (j = 0 ; j < m ; j++) {
            scanf("%d",&A[i][j]);
        }
    }

    /* Sum of rows Problem */
    for(i = 0 ; i < n ; i++) {
        B[i] = 0;         
        for(j = 0 ; j < m ; j++) {
            B[i] = B[i] + A[i][j];
            ++i;        
        }
    }
    for(i = 0 ; i < n ; i++) {                        
        for(j = 0 ; j < m ; j++) {        
            printf("The sum of rows %d \n", B[j]);
        }
    }      
    return 0;
}

1 个答案:

答案 0 :(得分:2)

实际上,你只需要在内循环中删除++i,程序运行正常。

代码:

int main (void) {
    int A[5][5];       
    int B[5];
    int x=0,sum=0;
    int n,m,i=0,j;

    printf("Enter rows and columns : \n");
    scanf("%d %d",&n,&m);
    printf("Enter matrix : \n");

    for (i = 0 ; i < n ; i++) {               
        for (j = 0 ; j < m ; j++) {
            scanf("%d",&A[i][j]);
        }
    }

    /* Sum of rows Problem */
    for(i = 0 ; i < n ; i++) {
        B[i] = 0;         
        for(j = 0 ; j < m ; j++) {
            B[i] = B[i] + A[i][j];    //Removed the stray ++i from here.   
        }
    }
    for(i = 0 ; i < n ; i++)
    {                                
            printf("The sum of row %d is %d \n",i+1,B[i]);
    }      
    return 0;
}

如果i == size - j- 1是数组的大小,那么在回答第二个问题时,对角线size