我想知道输入俩个三行三列矩阵,矩阵进行相乘操作,用行指针实现的原理
1条回答 默认 最新
- 技术专家团-小桥流水 2021-10-25 09:51关注
矩阵相乘,结果矩阵的第i行j列的元素就是矩阵a的i行成语矩阵b的j列的元素和。
代码如下,如有帮助,请帮忙采纳一下,谢谢。#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; }
解决 无用评论 打赏 举报
悬赏问题
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果
- ¥15 matlab图像高斯低通滤波
- ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
- ¥15 钢筋实图交点识别,机器视觉代码
- ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
- ¥50 400g qsfp 光模块iphy方案
- ¥15 两块ADC0804用proteus仿真时,出现异常
- ¥15 关于风控系统,如何去选择