乘以矩阵没有给出正确的答案

时间:2016-10-14 03:50:02

标签: c

我已经为我的学校课程编写了这个基本代码。代码运行,但不能正确计算乘法矩阵。据我所知,没有错,但这就是我在这里的原因。它给了我数以百万计的数字 感谢任何人都能提供的帮助。

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;
}

1 个答案:

答案 0 :(得分:1)

有很多错误:

  • 你的错误在于b matrice的定义。它的大小为3x3,但你的定义是4x4。需要说明的是,bb[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;
    }