如何用二维数组实现矩阵乘法(初级)

代码如下:

#define ROW 3
#define COL 4
int main()
{
    int arr1[ROW][COL] = { 1,2,3,4,5,6,7,8,9,10,11,12};
    int arr2[ROW][COL] = { 12,11,10,9,8,7,6,5,4,3,2,1 };
    int arr3[ROW][COL]={0};
    int i,j,k;
    printf("\narray arr1:\n"); 
    for( i=0;i<3;i++)
    {
        for( j=0;j<4;j++)
          {
              arr3[i][j]=arr1[i][j];
            printf("%5d",arr3[i][j]);
        } 
        printf("\n");
    }
    printf("\narray arr2:\n"); 
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
          {
              arr3[i][j]=arr2[i][j];
            printf("%5d",arr3[i][j]);
        } 
        printf("\n");
    }
    printf("\narray arr1*arr2:\n"); 
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
          {
              for( k=0;k<4;k++)
              arr3[i][j]+=arr1[i][k]*arr2[k][j];
            printf("%5d",arr3[i][j]);
        } 
        printf("\n");
    }
    return 0;
}

运行结果

img


好像算错了,但是不知道哪里错了。

基于new Bing的修改:

#define ROW 3
#define COL 4
int main()
{
int arr1[ROW][COL] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
int arr2[COL][ROW] = { {12,11,10}, {9,8,7}, {6,5,4}, {3,2,1} };
int arr3[ROW][ROW] = {0};
int i,j,k;
printf("\narray arr1:\n");
for(i=0; i<ROW; i++)
{
for(j=0; j<COL; j++)
{
printf("%5d", arr1[i][j]);
}
printf("\n");
}
printf("\narray arr2:\n");
for(i=0; i<COL; i++)
{
for(j=0; j<ROW; j++)
{
printf("%5d", arr2[i][j]);
}
printf("\n");
}
printf("\narray arr1*arr2:\n");
for(i=0; i<ROW; i++)
{
for(j=0; j<ROW; j++)
{
for(k=0; k<COL; k++)
{
arr3[i][j] += arr1[i][k] * arr2[k][j];
}
printf("%5d", arr3[i][j]);
}
printf("\n");
}
return 0;
}