有人能帮我吗?
我需要对用户发送的数据执行两个矩阵的求和,并将结果打印到一个新的矩阵中。
我设法从两个数组中捕获了数据,但当我尝试将两者相加时,代码不会打印总和,错误在哪里?
感谢
#include <stdio.h>
#include <stdlib.h>
void sum(int *mat_A, int *mat_B, int *mat_C);
int main() {
int mat_A[4][4];
int mat_B[4][4];
int mat_C[4][4];
int i, j, value;
printf("nEnter integer values for the elements of matrix A: n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("nElement[%d][%d] = ", i, j);
scanf_s("%d", &value);
mat_A[i][j] = value;
}
}
printf("nEnter integer values for the elements of matrix B: n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("nElement[%d][%d] = ", i, j);
scanf_s("%d", &value);
mat_B[i][j] = value;
}
}
calc_soma(*mat_A, *mat_B, *mat_C);
printf("nSum of matrices A with B: nn");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
value = mat_C[i][j];
printf("%d", value);
}
printf("n");
}
return 0;
}
void sum(int *mat_A, int *mat_B, int *mat_C) {
int i, j;
int value;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
value = *mat_A + *mat_B;
*mat_C = value;
}
}
}
您需要将sum()
的参数声明为二维数组,而不是int *
,后者是指向一维数组的指针。然后使用i
和j
作为数组索引。
您也在用错误的名称calc_soma
调用函数。
#include <stdio.h>
#include <stdlib.h>
void sum(int mat_A[4][4], int mat_B[4][4], int mat_C[4][4]);
int main() {
int mat_A[4][4];
int mat_B[4][4];
int mat_C[4][4];
int i, j, value;
printf("nEnter integer values for the elements of matrix A: n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("nElement[%d][%d] = ", i, j);
scanf_s("%d", &value);
mat_A[i][j] = value;
}
}
printf("nEnter integer values for the elements of matrix B: n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("nElement[%d][%d] = ", i, j);
scanf_s("%d", &value);
mat_B[i][j] = value;
}
}
sum(mat_A, mat_B, mat_C);
printf("nSum of matrices A with B: nn");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
value = mat_C[i][j];
printf("%d", value);
}
printf("n");
}
return 0;
}
void sum(int mat_A[4][4], int mat_B[4][4], int mat_C[4][4]) {
int i, j;
int value;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
value = mat_A[i][j] + mat_B[i][j];
mat_C[i][j] = value;
}
}
}