C语言 生成单位矩阵(低耦合 可重用)
生成单位矩阵的方法
有同学需要,就抽十来分钟写了几段,不过只用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");}
}
这里注意一下下,行列数量的参数row
和cols
是int
类型的,不能超过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语言 生成单位矩阵(低耦合 可重用)相关推荐
- c语言如何实现高内聚低耦合_怎么理解高内聚低耦合
本文转自:http://www.cnblogs.com/hegezhou_hot/archive/2010/09/18/1830306.html 一.上章回顾 在上篇中我们讲解了几类UML2.0语言新 ...
- 用C语言编写低耦合程序
用C语言编写低耦合程序 耦合的定义 低耦合的优点 实现例子 普通的实现方式 低耦合的实现方式 耦合的定义 耦合,是对模块间关联程度的度量. 模块间的耦合度是指模块之间的依赖关系,其耦合性越强,同时 ...
- c语言如何实现高内聚低耦合_如何实现高内聚低耦合?高内聚低耦合的现实例子...
下面要给大家分享的是一个高内聚低耦合例子,那么编程应该如何实现高内聚低耦合呢?一起来看看下面的实例吧! 案例: 在一个学校里面,有着老师若干名,依次编号. 有学生若干名,依次编号. 现在的话,是要求要 ...
- 多模块顺序_软件架构基础 3: 什么是好的模块化代码?高内聚、低耦合如何衡量?...
0. 写在前面 什么是好的代码?好的代码应该模块化. 王垠在其<编程的智慧>中也提到,要"写模块化的代码".(不对人做评价,这篇文章写得是非常好的.) 如果你读过< ...
- 23种开发设计模式总结,追求高内聚低耦合的编程思想。
目录 一.概述 二.7个设计原则 1.单一职责原则 ( SRP ) 2.开闭原则 ( OCP ) 3.里氏替换原则 ( LSP ) 4.依赖倒置原则 ( DIP ) 5.接口隔离原则 ( ISP ) ...
- 高内聚和低耦合的个人理解
一.什么是高内聚低耦合 1.耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越紧密,其耦合性就越强,模块的独立性则越差.模块间耦合高低取决于模块间接口的复杂性.调用 ...
- 从高耦合到低耦合到底有多远?
一切都是拥抱变化,反过来说,如果没有变化或者需求很稳定,那么一切就是过度设计.所以,一切都要看情况,回到了马克思主义的辩证学.呵呵. 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉 ...
- 浅谈面向对象开发原则:高内聚,低耦合
软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低 ...
- 你的代码是否按照高内聚、低耦合的原则来设计的?
我们一直强调软件开发中要按照高内聚.低耦合的设计原则来做代码结构设计.c语言和c++不同,c语言面向过程.c++面向对象. 真正的项目中,要对业务升级,原来的业务函数需要保留,要保证老的功能继续维持, ...
最新文章
- 介绍一本零基础入门Python数据分析的书
- php 字符串 中文位置,怎样查找中文字符的位置呢
- linux添加源 红帽,红帽yum源改centos的源的方法
- 消息发送样例介绍和步骤分析
- 【灵修】舍得——有舍有得
- Pikachu实验过程重现(Burp suit的具体介绍)
- php是一种,php是一种什么类型的语言
- 开启fiddler之后电脑就断网
- MapReduce 内部实现机制,你真的懂吗?
- android 微信图片动画,一款仿微信图片加载,微博图片加载,视频加载时的进度view...
- ASP.NET CORE WEB应用(有数据库操作的应用)发布到IIS
- 计算机的安全选项在哪里,我的win10无线网络属性安全选项在哪里?
- 什么是 MATLAB 搜索路径
- web开发权威,一个合格的初级前端工程师需要掌握的模块笔记
- 单点登录服务Authelia(上篇)
- 前端知识点总结(三)
- Esri总裁用96页PPT告诉你GIS的未来将如何发展,而我们又该为此如何准备
- BT151-ASEMI单向可控硅BT151参数、尺寸、规格
- 贴吧顶贴php脚步,贴吧干货:利用代码无限顶贴
- 查看httpd并发请求数及其TCP连接状态