我为我的学校类(class)编写了这个基本代码。代码运行,但未正确计算乘法矩阵。据我所知,没有什么问题,但这就是我来这里的原因。它给了我数以百万计的数字。
感谢任何人可以提供的帮助。
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 1; j++)
{
sum = 0;
for (k = 0; k <= 2; k++)
{
sum = sum + a[i][k] * b[k][j];
}
c[i][j] = sum;
根据我在这些论坛上其他地方读到的内容,我认为这个乘法部分是正确的。
#include<stdio.h>
int main()
{
int a[10][10], c[10][10], i, j, k;
int sum = 0;
printf("Enter your values for the 2x4 matrix:\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
{
scanf("%d", &a[i][j]);
}
}
int b[3][3];
b[0][0]=2;
b[1][0]=41;
b[2][0]=12;
b[3][0]=15;
b[0][1]=7;
b[0][2]=34;
b[0][3]=3;
b[1][1]=32;
b[2][1]=1;
b[3][1]=5;
b[1][2]=13;
b[1][3]=6;
b[2][2]=0;
b[3][2]=7;
b[2][3]=11;
b[3][3]=9;
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 1; j++)
{
sum = 0;
for (k = 0; k <= 2; k++)
{
sum = sum + a[i][k] * b[k][j];
}
c[i][j] = sum;
}
}
printf("Multiplication Of Two Matrices: \n");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
{
printf(" %d ", c[i][j]);
}
printf("\n");
}
return 0;
}
最佳答案
有很多错误:
- 您的错误在于
b
矩阵的定义。它的大小为 3x3,但您的定义使其为 4x4。需要明确的是,b
从b[0][0]
开始,到b[2][2]
结束,因此有3x3=9
个元素。 - 矩阵
a
的大小为4x2。矩阵b
的大小为 3x3。两者不能相乘。矩阵b
应更改为 2x3 大小,或将a
更改为 4x3 大小。
所以,正确的代码是:
#include<stdio.h>
int main()
{
int a[10][10], c[10][10], i, j, k;
int sum = 0;
printf("Enter your values for the 2x4 matrix:\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
}
int b[3][3];
b[0][0]=2;
b[1][0]=41;
b[2][0]=12;
/* b[3][0]=15; */
b[0][1]=7;
b[0][2]=34;
b[0][3]=3;
b[1][1]=32;
b[2][1]=1;
/* b[3][1]=5; */
b[1][2]=13;
b[1][3]=6;
b[2][2]=0;
b[3][2]=7;
b[2][3]=11;
/* b[3][3]=9; */
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 1; j++)
{
sum = 0;
for (k = 0; k <= 2; k++)
{
sum = sum + a[i][k] * b[k][j];
}
c[i][j] = sum;
}
}
printf("Multiplication Of Two Matrices: \n");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
{
printf(" %d ", c[i][j]);
}
printf("\n");
}
return 0;
}
关于c - 矩阵相乘没有给出正确答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034641/