求和矩阵的元素并计算第i行的平均值

时间:2017-06-29 15:20:25

标签: c

大家,我在语言C中练习这个练习。
练习是:
给定一个矩阵写一个函数:
A)计算并返回元素的总和 B)计算并返回第i行的平均值
我做了我自己的程序,但我有很多错误 我的程序是:

#include <stdio.h>
#include <stdlib.h>

void main(){
int n=10;
int m=10;
int i;
int j;
int mat [i][j];
int sum=0;
for (i=0;i<n;i++){
    for (j=0; j<m;j++)
        sum=sum+mat[i][j];}
printf("The sum of all elements of matrix is:%d",sum);
somma=0;
for (j=0;j<m;i++){
    sum=sum+mat[i][j];
    sum=sum/m
        printf("The average of i-th line is:%d",sum);
 }
}

我认为我必须将scanf放在某个地方,但我不知道在哪里。 我希望你能帮助我 谢谢!

1 个答案:

答案 0 :(得分:1)

您声明了一个未定义大小的矩阵

int mat [i][j];

其中ij未被初始化。

你可能想要

int mat [n][m];

此外,您的矩阵应该使用值进行初始化,否则您将获得堆栈垃圾的总和。

最后,可能的解决方案是

#include <stdio.h>

int main(void)
{
    int n = 2;
    int m = 2;
    int i;
    int j;
    int mat[n][m];
    int sum = 0;

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("Insert value of mat[%d][%d]: ", i, j);
            scanf("%d", &mat[i][j]);
        }
    }

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            sum = sum + mat[i][j];
        }
    }

    printf("The sum of all elements of matrix is: %d\n", sum);

    for (i = 0; i < n; i++)
    {
        sum = 0;
        for (j = 0; j < m; j++)
        {
            sum = sum + mat[i][j];
        }
        sum = sum / m;
        printf("The average of line %d is: %d\n", i, sum);
    }
}

如您所见,我更改了平均值:

  1. 首先,您编写了j循环递增i
  2. 您必须循环所有行,因此您必须添加包含行
  3. 的for循环
  4. 每次计算行平均值时必须重置总和
  5. 注意平均值是使用整数计算的,因此没有小数可用。