当前位置: 首页 > news >正文

5.1二维数组与矩阵乘法

#include stdio.h#include malloc.h#include stdlib.h#define ROWS 4#define COLUMNS 5/*** 动态二维数组结构体*/typedef struct TwoDArray{int rows; // 行数int columns; // 列数int** elements; // 二级指针存储数组元素} TwoDArray, *TwoDArrayPtr;/*** 静态二维数组结构体*/typedef struct TwoDStaticArray{int rows;int columns;int elements[ROWS][COLUMNS]; // 固定大小数组} TwoDStaticArray, *TwoDStaticArrayPtr;/*** 初始化动态二维数组*/TwoDArrayPtr initTwoDArray(int paraRows, int paraColumns){int i;TwoDArrayPtr resultPtr (TwoDArrayPtr)malloc(sizeof(struct TwoDArray));resultPtr-rows paraRows;resultPtr-columns paraColumns;resultPtr-elements (int**)malloc(paraRows * sizeof(int*));for (i 0; i paraRows; i ){resultPtr-elements[i] (int*)malloc(paraColumns * sizeof(int));}//Of for ireturn resultPtr;}// Of initTwoDArray/*** 给数组随机赋值*/void randomizeTwoDArray(TwoDArrayPtr paraPtr, int paraLowerBound, int paraUpperBound){int i, j;for (i 0; i paraPtr-rows; i ){for (j 0; j paraPtr-columns; j ) {paraPtr-elements[i][j] rand() % (paraUpperBound - paraLowerBound) paraLowerBound;}//Of for j}//Of for i}// Of randomizeTwoDArray/*** 打印二维数组*/void printTwoDArray(TwoDArrayPtr paraPtr){int i, j;for (i 0; i paraPtr-rows; i ){for (j 0; j paraPtr-columns; j ) {printf(%d, , paraPtr-elements[i][j]);}//Of for jprintf(\r\n);}//Of for i}// Of initTwoDArray/*** 矩阵乘法运算*/TwoDArrayPtr matrixMultiply(TwoDArrayPtr paraPtr1, TwoDArrayPtr paraPtr2){int i, j, k, sum;// 判断是否满足矩阵相乘条件if (paraPtr1-columns ! paraPtr2-rows){printf(Matrices cannot be multiplied.\r\n);return NULL;}//Of ifTwoDArrayPtr resultPtr initTwoDArray(paraPtr1-rows, paraPtr2-columns);// 三层循环实现矩阵相乘for (i 0; i paraPtr1-rows; i ){for (j 0; j paraPtr2-columns; j ) {sum 0;for (k 0; k paraPtr1-columns; k ) {sum paraPtr1-elements[i][k] * paraPtr2-elements[k][j];}//Of for kresultPtr-elements[i][j] sum;printf(sum %d, , sum);}//Of for j}//Of for ireturn resultPtr;}// Of matrixMultiply/*** 动态二维数组测试*/void twoDArrayTest(){TwoDArrayPtr tempPtr1, tempPtr2, tempPtr3;tempPtr1 initTwoDArray(3, 2);randomizeTwoDArray(tempPtr1, 1, 5);printf(The first matrix:\r\n);printTwoDArray(tempPtr1);tempPtr2 initTwoDArray(2, 4);randomizeTwoDArray(tempPtr2, 4, 9);printf(The second matrix:\r\n);printTwoDArray(tempPtr2);tempPtr3 matrixMultiply(tempPtr1, tempPtr2);printf(The result:\r\n);printTwoDArray(tempPtr3);}//Of twoDArrayTest/*** 初始化静态二维数组输出元素地址*/TwoDStaticArrayPtr initTwoDStaticArray(){int i, j;TwoDStaticArrayPtr resultPtr (TwoDStaticArrayPtr)malloc(sizeof(struct TwoDStaticArray));resultPtr-rows ROWS;resultPtr-columns COLUMNS;for (i 0; i ROWS; i ){for (j 0; j COLUMNS; j ) {resultPtr-elements[i][j] i * 10 j;//Print their addresses.printf((%d, %d): %d; , i, j, (resultPtr-elements[i][j]));}//Of for j}//Of for ireturn resultPtr;}// Of initTwoDStaticArray/*** 程序入口*/int main(){twoDArrayTest();TwoDStaticArrayPtr tempPtr initTwoDStaticArray();return 1;}// Of main知识点总结1. 区分静态二维数组和动态二维数组静态大小固定动态可灵活指定行列。​2. 动态二维数组依靠二级指针配合内存分配实现使用更灵活。​3. 矩阵相乘规则第一个矩阵列数等于第二个矩阵行数。​4. 利用 rand() 函数可快速给数组批量生成随机数值。​5. 可通过打印地址直观观察数组元素内存分布规律。
http://www.gsyq.cn/news/1335052.html

相关文章:

  • 18V/4A同步降压转换器:MPQ8632GLE-4的COT控制与快速瞬态响应解析
  • 【Perplexity阅读推荐查询实战指南】:20年AI工具专家亲授5大精准筛选技巧,错过再等一年
  • 2460亿个数据点告诉你,人是一瞬间变老的
  • 保姆级教程:用Python+OpenCV实现无人机吊舱图像与卫星地图的自动匹配(附代码)
  • 打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
  • Keil5调试效率翻倍指南:除了单步运行,这些高级窗口你用过吗?(含System Viewer/Command Window实战)
  • C++调试小技巧:除了typeid,还有哪些方法能动态查看变量类型?(附代码示例)
  • 苏州小微企业财税外包服务机构推荐排行盘点:苏州注册公司地址挂靠、苏州注册园区地址挂靠、苏州网上申请注册、苏州财务公司代理记账选择指南 - 优质品牌商家
  • 创业团队如何借助taotoken低成本快速验证多个ai产品创意原型
  • 2026苏州注册资金认缴服务机构排行实测盘点:苏州公司注册开户、苏州公司营业执照办理、苏州兼职会计代账、苏州小微企业财税外包选择指南 - 优质品牌商家
  • LabelImg标注VOC数据集避坑指南:从安装到批量标注的完整工作流
  • 5个真正赚钱的 AI 工作流 (2026)
  • 半波整流电路:从原理到实践,掌握AC-DC转换基础
  • 2026白蚁防治技术分享:潮州白蚁消杀、玉林白蚁消杀、绵阳白蚁消杀、莆田白蚁消杀、衡阳白蚁消杀、赣州白蚁消杀、邵阳白蚁消杀选择指南 - 优质品牌商家
  • 刚发布的Perplexity v2.4.1词汇增强模块,已悄悄接入BERT-wwm-ext蒸馏模型——内测权限仅剩最后47个名额
  • Linux符号链接原理与实战:从快捷方式到系统管理核心技能
  • Java Snowy框架CI/CD云效自动化部署流程
  • 超实用!PS 修改截图文字最简单方法,自然无破绽
  • 复旦微FM33FR0xx开发板实战:从零构建低功耗电容触摸应用
  • 电磁炉电源保护:压敏电阻工作原理、选型与故障排查全解析
  • 从开发者视角分享Taotoken文档与示例代码的上手便捷度
  • 基于协同过滤算法的绿色食品推荐系统(10075)
  • 非 CTP 柜台连接天勤:众期融航易达等网关差异备忘
  • SystemVerilog测试套件从IP到SoC的重用:架构设计与工程实践
  • 阶段与关口:项目管理中的执行与决策核心逻辑解析
  • 国产GPU适配CAD实战:中望Linux版与摩尔线程兼容性认证全解析
  • HsMod终极指南:55项功能打造你的个性化炉石传说体验
  • 别再死磕标注数据了!用扩散模型从海量无标签遥感图像中‘白嫖’语义信息,提升变化检测精度
  • 阿里云服务器上fastText安装踩坑记:从C++11报错到模型量化压缩的完整避坑指南
  • 别再死记硬背!用Python可视化理解第一类曲面积分中的dσ与dxdy关系