从零开始写代码 2023-04-16 20:12 采纳率: 69.2%
浏览 14
已结题

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

代码如下:

#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


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

  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2023-04-16 20:20
    关注

    基于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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月16日