生成单位矩阵的方法

有同学需要,就抽十来分钟写了几段,不过只用int类型做了示例demo


一、生成矩阵的组件


就两个,获取和显示:

1 显示:ArrayInit(int rows, int cols, int* mat[])
2.1 获取矩阵:GetMagicMat(int magicNum, int size)
2.2 包含初始化:ArrayInit(int rows, int cols, int* mat[])

二、实现


首先解决矩阵的显示问题,这个比较简单,注意格式和范围就好:

#include <iostream>
/* show the elems of any matixNotice: the matrix must obey size< (2^(sizeof(int)*8))*(2^(sizeof(int)*8)) */
void ShowMatrix(int rows,int cols,int* mat[])
{for (int i = 0;i < rows;i++) {for (int j = 0;j < cols;j++) {printf("%d\t",mat[i][j]);}printf("\n");}
}

这里注意一下下,行列数量的参数rowcolsint类型的,不能超过2^(sizeof(int)*8),也即2的32次方。


然后是获取单位矩阵,这个代码实现支持magic matrix的生成,斜对角上可以填任意合适的数字:

/* Just as the function identifier shows */
int** GetMagicMat(int magicNum, int size)
{/* Get space then init  */int** eye = (int**)malloc(size * sizeof(int));for (int i = 0;i < size;i++) {eye[i] = (int*)malloc(size * sizeof(int));}ArrayInit(size,size,eye);/* fill the space */int j = 0;for (int i = 0;i < size;i++) {eye[i][j++] = magicNum;}   return eye;
}

其中,magicNum是你指定的角线上的数字,size是方针的行数(=列数)。


当然,GetMagicMat(int magicNum, int size)里面调用了矩阵的初始化函数,实现如下:

/* Init a array<int> with zero */
void ArrayInit(int rows, int cols, int* mat[])
{for (int i = 0;i < rows;i++) {for (int j = 0;j < cols;j++) {mat[i][j] = 0;}}
}

也就是全部填充为0


当然 ,两三个函数还是不够精简,封装成一个函数,方便使用:

/* What you do really want */
void GetMagicAndShow(int size, int magicNum)
{int** eyex;eyex = GetMagicMat(magicNum, size);ShowMatrix(size, size, eyex);
}

示例:生成一个4×4大小,斜对角上为1的方阵

int main()
{int** eyex;int size = 4;const int magicNumber = 1;printf("Please set the size(<2^32) of the matix:");scanf_s("%d",&size);GetMagicAndShow(size, magicNumber);
}

示例运行效果:

C语言 生成单位矩阵(低耦合 可重用)相关推荐

  1. c语言如何实现高内聚低耦合_怎么理解高内聚低耦合

    本文转自:http://www.cnblogs.com/hegezhou_hot/archive/2010/09/18/1830306.html 一.上章回顾 在上篇中我们讲解了几类UML2.0语言新 ...

  2. 用C语言编写低耦合程序

    用C语言编写低耦合程序 耦合的定义 低耦合的优点 实现例子 普通的实现方式 低耦合的实现方式 耦合的定义   耦合,是对模块间关联程度的度量. 模块间的耦合度是指模块之间的依赖关系,其耦合性越强,同时 ...

  3. c语言如何实现高内聚低耦合_如何实现高内聚低耦合?高内聚低耦合的现实例子...

    下面要给大家分享的是一个高内聚低耦合例子,那么编程应该如何实现高内聚低耦合呢?一起来看看下面的实例吧! 案例: 在一个学校里面,有着老师若干名,依次编号. 有学生若干名,依次编号. 现在的话,是要求要 ...

  4. 多模块顺序_软件架构基础 3: 什么是好的模块化代码?高内聚、低耦合如何衡量?...

    0. 写在前面 什么是好的代码?好的代码应该模块化. 王垠在其<编程的智慧>中也提到,要"写模块化的代码".(不对人做评价,这篇文章写得是非常好的.) 如果你读过< ...

  5. 23种开发设计模式总结,追求高内聚低耦合的编程思想。

    目录 一.概述 二.7个设计原则 1.单一职责原则 ( SRP ) 2.开闭原则 ( OCP ) 3.里氏替换原则 ( LSP ) 4.依赖倒置原则 ( DIP ) 5.接口隔离原则 ( ISP ) ...

  6. 高内聚和低耦合的个人理解

    一.什么是高内聚低耦合 1.耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块的独立性则越差.模块间耦合高低取决于模块间接口的复杂性.调用 ...

  7. 从高耦合到低耦合到底有多远?

    一切都是拥抱变化,反过来说,如果没有变化或者需求很稳定,那么一切就是过度设计.所以,一切都要看情况,回到了马克思主义的辩证学.呵呵. 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉 ...

  8. 浅谈面向对象开发原则:高内聚,低耦合

    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...

  9. 你的代码是否按照高内聚、低耦合的原则来设计的?

    我们一直强调软件开发中要按照高内聚.低耦合的设计原则来做代码结构设计.c语言和c++不同,c语言面向过程.c++面向对象. 真正的项目中,要对业务升级,原来的业务函数需要保留,要保证老的功能继续维持, ...

最新文章

  1. 介绍一本零基础入门Python数据分析的书
  2. php 字符串 中文位置,怎样查找中文字符的位置呢
  3. linux添加源 红帽,红帽yum源改centos的源的方法
  4. 消息发送样例介绍和步骤分析
  5. 【灵修】舍得——有舍有得
  6. Pikachu实验过程重现(Burp suit的具体介绍)
  7. php是一种,php是一种什么类型的语言
  8. 开启fiddler之后电脑就断网
  9. MapReduce 内部实现机制,你真的懂吗?
  10. android 微信图片动画,一款仿微信图片加载,微博图片加载,视频加载时的进度view...
  11. ASP.NET CORE WEB应用(有数据库操作的应用)发布到IIS
  12. 计算机的安全选项在哪里,我的win10无线网络属性安全选项在哪里?
  13. 什么是 MATLAB 搜索路径
  14. web开发权威,一个合格的初级前端工程师需要掌握的模块笔记
  15. 单点登录服务Authelia(上篇)
  16. 前端知识点总结(三)
  17. Esri总裁用96页PPT告诉你GIS的未来将如何发展,而我们又该为此如何准备
  18. BT151-ASEMI单向可控硅BT151参数、尺寸、规格
  19. 贴吧顶贴php脚步,贴吧干货:利用代码无限顶贴
  20. 查看httpd并发请求数及其TCP连接状态

热门文章

  1. 基于fastDFS和elementUI的文件上传(只要后端有数据,一通百通。)
  2. 五万块钱 如何成功创业?
  3. Qt 绘制图片自适应窗口大小(QImage,QPixmap,QLabel)
  4. 物联网毕设 -- 智能宠物投喂器(图传+APP+ESP32-CAN)
  5. java 元注解 @Repeatable
  6. 1-服务器的基本概念与初识Ajax
  7. springboot+veu实战项目-天猫整站
  8. 亮点抢先看!华为中国合作伙伴大会2023即将启幕
  9. vue基础知识练习整理2
  10. bootstrap-daterangepicker