大家,我在语言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放在某个地方,但我不知道在哪里。 我希望你能帮助我 谢谢!
答案 0 :(得分:1)
您声明了一个未定义大小的矩阵
int mat [i][j];
其中i
和j
未被初始化。
你可能想要
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);
}
}
如您所见,我更改了平均值:
j
循环递增i
注意平均值是使用整数计算的,因此没有小数可用。