zhanglihuan03130 2021-10-24 10:42 采纳率: 0%
浏览 23

对用行指针进行矩阵相乘操作的运行结果看不太明白

我想知道输入俩个三行三列矩阵,矩阵进行相乘操作,用行指针实现的原理

  • 写回答

1条回答 默认 最新

  • 关注

    矩阵相乘,结果矩阵的第i行j列的元素就是矩阵a的i行成语矩阵b的j列的元素和。
    代码如下,如有帮助,请帮忙采纳一下,谢谢。

    img

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i,j,t;
        int **a,**b;
        int c[3][3];
        a = (int **)malloc(sizeof(int*)*3);
        b = (int **)malloc(sizeof(int*)*3);
        //给数组赋值
        for (i=0;i<3;i++)
        {
            a[i] = (int*)malloc(sizeof(int)*3); 
            b[i] = (int*)malloc(sizeof(int)*3); 
            for (j=0;j<3;j++)
            {
                a[i][j] = i;
                b[i][j] = i+1;
            }
        }
    
        //打印数组a
        for (i=0;i<3;i++)
        {
            for (j=0;j<3;j++)
            {
                printf("%d ",a[i][j]);
            }
            printf("\n");
        }
        //打印数组b
        for (i=0;i<3;i++)
        {
            for (j=0;j<3;j++)
            {
                printf("%d ",b[i][j]);
            }
            printf("\n");
        }
    
        //矩阵相乘
        for (i=0;i<3;i++)
        {
            for (j=0;j<3;j++)
            {
                c[i][j] = 0; //c[i][j] 是数组a的i行和数组b的j列对应数据相乘后的和
                for(t = 0;t<3;t++)
                    c[i][j] += (*(a+i))[t] * b[t][j];  //(*(a+i)) 就是a的第i+1行指针
                printf("%4d",c[i][j]);
                
            }
            printf("\n");
        }
        //释放指针
        for (i=0;i<3;i++)
        {
            free(a[i]);
            free(b[i]);
            a[i] = 0;
            b[i] = 0;
        }
        free(a);
        free(b);
        return 0;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月24日

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择