首页 > 解决方案 > 无法通过函数打印矩阵元素

问题描述

我无法通过函数打印矩阵的元素。

下面是我写的代码。请通过解决方案回复来帮助我。

main() {
    int m[10][10], r, c, m_sum;
    add_elements(m, r, c);
    print_elements(m, r, c, m_sum);
}
add_elements(int m[10][10], int r, int c, int m_sum){
    int i, j;
    printf("Enter the number of rows: ");
    scanf("%d", &r);
    printf("\nEnter the number of rows: ");
    scanf("%d", &c);
    for(i=1; i<=r; i++){
        for(j=1;j<=c; j++){
            scanf("%d", &m[i][j]);
            m_sum = m_sum + m[i][j];
        }
    }

}
print_elements(int m[10][10], int r, int c, int m_sum){
    int i, j;
    printf("\n\nThe matrix is: \n\n");
    for(i=1; i<=r; i++){
        for(j=1;j<=c; j++){
            printf("%d", m[i][j]);
            printf("\t");
        }
        printf("\n");
    }
    printf("\n\nThe sum of the elements are : %d", m_sum);
}

标签: carraysfunction

解决方案


这是正确打印矩阵和总和的工作代码。

#include<stdio.h>
add_elements(int m[10][10], int *r, int *c, int *m_sum)
{
    int i, j;
    printf("Enter the number of rows: ");
    scanf("%d", r);
    printf("\nEnter the number of rows: ");
    scanf("%d", c);
    for(i=0; i<*r; i++){
        for(j=0;j<*c; j++){
            scanf("%d", &m[i][j]);
            *m_sum = *m_sum + m[i][j];
        }
    }

}
print_elements(int m[10][10], int r, int c, int m_sum)
{
    int i, j;
    printf("\n\nThe matrix is: \n\n");
    for(i=0; i<r; i++){
        for(j=0;j<c; j++){
            printf("%d", m[i][j]);
            printf("\t");
        }
        printf("\n");
    }
    printf("\n\nThe sum of the elements are : %d", m_sum);
}
int main()
{
    int m[10][10], r, c, m_sum=0;
    add_elements(m, &r, &c,&m_sum);
    print_elements(m, r, c, m_sum);
}

修复了一些错误:

  1. 函数应该在调用之前声明,也就是在调用之前main()
  2. C 中的数组索引是 from 0to n-1,而不是 from 1ton
  3. m_sum未初始化为0
  4. 添加元素的参数数量不同
  5. 从to函数返回后r,c和的值m_sum没有得到更新。所以,我将它们作为指向函数的指针传递。add_elements()main(

推荐阅读