gpt4 book ai didi

C编程和矩阵乘法输出问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:42 24 4
gpt4 key购买 nike

我目前正在学习 C 编程,为了更好地理解 C 中的矩阵,我尝试编写了这个程序。我的输出似乎有问题,因为您可以看到该程序有 3 个函数。第一个允许您输入数组的值,然后显示它。第二个函数执行乘法,最后一个函数应显示相乘矩阵的输出。但是输出很奇怪。这是我的代码。输出就在代码下方。

#include <stdio.h>

void read_matrix(int m2[][3] )
{
int i, j;
printf("input values for matrix in order of rows first \n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d",&m2[i][j]);
}
}

for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", m2[i][j]);
}
printf("\n");
}
}

void multiply_matrices(int m1[][3], int m2[][3] ,int m3[][3])
{
int i, j, k;

for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
for (k = 0; k < 3; k++){
m3[i][j] +=m1[i][k]*m2[k][j];
}
}
}
}

void write_matrix(int m3[][3] )
{
int i, j;

for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", m3[i][j]);
}
printf("\n");
}
}

int main(void)
{
int matrix1[3][3], matrix2[3][3], matrix3[3][3];

read_matrix(matrix1);
read_matrix(matrix2);

multiply_matrices(matrix1, matrix2, matrix3);

write_matrix(matrix3);

return 0;
}

这是输出!

input values for matrix in order of rows first
1
2
3
2
2
2
1
2
2
1 2 3
2 2 2
1 2 2
input values for matrix in order of rows first
2
1
1
1
2
1
2
1
2
2 1 1
1 2 1
2 1 2
-858993450 -858993452 -858993451 /*This is the multiplied matrix output!*/
-858993450 -858993452 -858993452
-858993452 -858993453 -858993453
Press any key to continue . . .

我担心这可能只是一个愚蠢的错误;如果是这样,我很抱歉,但我现在看不出我哪里出错了。

如有任何帮助,我们将不胜感激。

最佳答案

执行此操作前需要将矩阵m3的所有元素初始化为0

m3[i][j] +=m1[i][k]*m2[k][j];   

在函数 multiply_matrices 中。

关于C编程和矩阵乘法输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com