番外篇之矩阵运算

矩阵的运算代码(加减乘除)(内有注释)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define ROW 10  //定义行
#define COL 10	//定义列
//设置全局变量A矩阵的m代表实际矩阵的行数,n代表实际矩阵的列数
//设置全局变量B矩阵的p代表实际矩阵的行数,q代表实际矩阵的列数
int m, n;
int p, q;
void menu()
{printf("**********************请选择你要进行的运算\n");printf("**********************0:退出矩阵运算     \n");printf("**********************1:加法运算		  \n");printf("**********************2:减法运算	      \n");printf("**********************3:转置运算	      \n");printf("**********************4:乘法运算		  \n");
}
void Input_MAT(int A[][COL], int B[][COL])
{int i = 0;int j = 0;printf("输入A数组的行数,列数:");scanf("%d%d", &m, &n);printf("输入A数组:\n");for (; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("输入B数组的行数,列数:");scanf("%d%d", &p, &q);printf("输入B数组:\n");//输入B数组for (i = 0; i < p; i++){for (j = 0; j < q; j++){scanf("%d", &B[i][j]);}}
}
void Output_MAT(int A[][COL], int B[][COL])
{int i = 0;int j = 0;//输出A数组printf("输出A数组:\n");for (; i < m; i++){for (j = 0; j < n; j++){printf("%2d ", A[i][j]);}printf("\n");}printf("输出B数组:\n");//输出B数组for (i = 0; i < p; i++){for (j = 0; j < q; j++){printf("%2d ", B[i][j]);}printf("\n");}
}
//矩阵相加
void Add(int A[][COL],int B[][COL],int sum[][COL])
{if (m == p && n == q){int i = 0;int j = 0;for (; i < m; i++){for (j = 0; j < n; j++)sum[i][j] = A[i][j] + B[i][j];//得到和矩阵}//打印和矩阵printf("开始打印和矩阵\n");for (i=0; i < m; i++){for (j = 0; j < n; j++)printf("%2d ", sum[i][j]);printf("\n");}}elseprintf("你的矩阵相加形式不合法,请重新输入\n");
}
void Sub(int A[][COL], int B[][COL], int sum[][COL])
{if (m == p && n == q){int i = 0;int j = 0;for (; i < m; i++){for (j = 0; j < n; j++)sum[i][j] = A[i][j] - B[i][j];//得到差矩阵}//打印和矩阵printf("开始打印减矩阵\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++)printf("%2d ", sum[i][j]);printf("\n");}}elseprintf("你的矩阵相减形式不合法,请重新输入\n");
}
void Tra(int A[][COL],int B[][COL])
{printf("下面开始A矩阵的转置\n");int i = 0;int j = 0;//转置运算for (; i < m; i++){for (j = i; j < n; j++){int tmp = 0;tmp = A[i][j];A[i][j] = A[j][i];A[j][i] = tmp;}}printf("下面开始B矩阵的转置\n");for (i = 0; i < p; i++){for (j = i; j < q; j++){int tmp = 0;tmp = B[i][j];B[i][j] = B[j][i];B[j][i] = tmp;}}//输入转置后的A,B矩阵Output_MAT(A, B);
}
void Mul1(int A[][COL], int B[][COL], int sum[][COL])
{int i = 0;int j = 0;int k = 0;if (n == p){for (; i < m; i++){for (j = 0; j < q; j++){for (k = 0; k < n; k++)sum[i][j] += A[i][k] * B[k][j];}}printf("开始打印积矩阵\n");for (i = 0; i < m; i++){for (j = 0; j < q; j++)printf("%2d ", sum[i][j]);printf("\n");}}elseprintf("矩阵相乘形式不合法\n");
}
void Mul2(int A[][COL], int B[][COL], int sum[][COL])
{int i = 0;int j = 0;int k = 0;if (q == m){for (; i < p; i++){for (j = 0; j < n; j++){for (k = 0; k < q; k++)sum[i][j] += B[i][k] * A[k][j];}}printf("开始打印积矩阵\n");for (i = 0; i < p; i++){for (j = 0; j < n; j++)printf("%2d ", sum[i][j]);printf("\n");}}elseprintf("矩阵相乘形式不合法\n");
}int main()
{int A[ROW][COL] = { 0 };//初始化A数组int B[ROW][COL] = { 0 };//初始化B数组//矩阵输入函数//Input_MAT(A,B);//矩阵输出函数//Output_MAT(A, B);int input = 0;//初始化要进行的运算密码do{menu();//菜单,你要进行的矩阵运算printf("请输入密码进行矩阵运算:");scanf("%d", &input);//矩阵输入函数Input_MAT(A, B);//矩阵输出函数Output_MAT(A, B);int flag = 0;//矩阵乘法,若flag = 0,进行A乘以B,若flag=1,进行B乘以Aint sum[ROW][COL] = { 0 };switch (input){case 0:printf("退出矩阵运算");break;case 1://定义矩阵之和的和矩阵Add(A, B, sum);//加法运算break;case 2://矩阵减法运算Sub(A, B, sum);break;case 3://A,B矩阵的转置Tra(A,B);break;case 4://A,B矩阵的乘法printf("请输入你要进行的矩阵乘法\n");printf("输入 0 进行A矩阵乘以B矩阵的运算\n");printf("输入 1 进行B矩阵乘以A矩阵的运算\n");printf("请输入数字:");scanf("%d", &flag);if(flag==0)Mul1(A, B, sum);if(flag==1)Mul2(A, B, sum);break;default:printf("输入数字不合法,请重新输入\n");break;}} while (input);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASO优化之如何测试应用的屏幕截图

截取屏幕截图并上传到应用商店后&#xff0c;我们需要对其进行测试和优化&#xff0c;从而来获得更高的转化率&#xff0c;精美的图片有助于提高应用在商店的安装率。 1、定义目标受众。 战略性地决定测试哪些目标受众&#xff0c;可以通过年龄、性别、地点、兴趣等来定义我们…

[黑马程序员SpringBoot2]——原理篇1

目录&#xff1a; bean的加载方式(—)bean的加载方式(二)bean的加载方式(三)FactoryBeanproxyBeanMethod属性bean的加载方式(四)bean的加载方式(五)bean的加载方式(六)bean的加载方式(七)bean的加载方式(八)bean加载控制&#xff08;编程式)bean加载控制&#xff08;注解式)be…

[ZJCTF 2019]NiZhuanSiWei

虽然有include函数但我们无法直接包含flag因为对file进行了过滤&#xff0c;又看见有反序列化的入口&#xff0c;只是并没有发现可利用的方法&#xff0c;但题目有提示所以尝试将其调出来 php伪协议写入内容 看到file_get_contents函数想到使用data协议&#xff0c;去封装一个…

Hive内置表生成函数

Hive内置UDTF 1、UDF、UDAF、UDTF简介2、Hive内置UDTF 1、UDF、UDAF、UDTF简介 在Hive中&#xff0c;所有的运算符和用户定义函数&#xff0c;包括用户定义的和内置的&#xff0c;统称为UDF&#xff08;User-Defined Functions&#xff09;。如下图所示&#xff1a; UDF官方文档…

远程安全访问JumpServer:使用cpolar内网穿透搭建固定公网地址

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Python潮流周刊:Twitter 的强敌 Threads 是用 Python 开发的!

&#x1f984;文章&教程 1、聊一聊 Python 和 Golang 的垃圾回收 常见的垃圾回收算法有哪些&#xff0c;它们的优缺点是什么&#xff1f;Python 的垃圾回收机制由什么组成&#xff0c;如何解决内存泄漏问题&#xff1f;Golang 的垃圾回收机制又是怎样的&#xff0c;如何解…

新式的拉式膜片弹簧离合器设计机械设计CAD

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;离合器 获取完整论文报告工程源文件 减震弹簧 摩擦片 膜片弹簧 压盘 轴 扭转减震器 从动盘 离合器 离合器的结构设计 为了达到计划书所给的数据要求&#xff0c;设计时应根据车型的类别、使用要求、制造条件&#xff0c;…

C#,《小白学程序》第四课:数学计算,总和与平均值

程序是 数据 计算 显示。 1 文本格式 /// <summary> /// 《小白学程序》第四课&#xff1a;数学计算 /// 这节课超级简单&#xff0c;就是计算成绩的平均值&#xff08;平均分&#xff09; /// 这个是老师们经常做的一件事。 /// </summary> /// <param name&…

洛谷P1049装箱问题 ————递归+剪枝+回溯

没没没没没没没没没错&#xff0c;又是一道简单的递归&#xff0c;只不过加了剪枝&#xff0c;我已经不想再多说&#xff0c;这道题写了一开始写了普通深搜&#xff0c;然后tle了一个点&#xff0c;后面改成剪枝&#xff0c;就ac了&#xff0c;虽然数据很水&#xff0c;但是不妨…

ruoyi-plus-vue docker 部署

本文以 ruoyi-vue-plus 5.x docker 部署为基础 安装虚拟机 部署文档 安装docker 安装docker 安装docker-compose 配置idea环境 上传 /doicker 文件夹 到服务器&#xff1b;赋值 777权限 chmod -R 777 /docker idea构建 jar 包 利用 idea 构建镜像; 创建基础服务 docker…

力扣 3. 无重复字符的最长子串

题目 题解 方法 public static int lengthOfLongestSubstring(String s) {HashSet<Character> charSet new HashSet<Character>();int i 0,l0,max0;for (int j 0; j < s.length(); j) {while (charSet.contains(s.charAt(j))) {charSet.remove(s.charAt(l…

【JavaEE初阶】Thread 类及常见方法、线程的状态

目录 1、Thread 类及常见方法 1.1 Thread 的常见构造方法 1.2 Thread 的几个常见属性 1.3 启动⼀个线程 - start() 1.4 中断⼀个线程 1.5 等待⼀个线程 - join() 1.6 获取当前线程引用 1.7 休眠当前线程 2、线程的状态 2.1 观察线程的所有状态 2.2 线程状态和状…

硬盘上不小心删除了重要文档?试试这6个成功率高的数据恢复工具!

您是否不小心重新格式化了存储卡或删除了想要保留的照片&#xff1f;最好的照片恢复软件可以提供帮助&#xff01;如果您使用数码相机拍摄的时间足够长&#xff0c;那么当您错误地删除了想要保留的图像、重新格式化了错误的 SD 卡&#xff0c;或者发现您的珍贵照片由于某种莫名…

CFO的GenAI应用指南

CFO应该采取的最重要行动是识别最大的创造价值的机会&#xff0c;然后确保他们获得所需的资金和其他资源。GenAI拥有成为革命性技术的潜力&#xff0c;但它不会改变金融和经济学的基本原则&#xff1a;一家公司必须产生高于资本成本的回报。 技术改变了每一项业务&#xff0c;往…

分布式锁,分布式锁应该具备哪些条件,分布式锁的实现方式有:基于Zookeeper实现、Redis实现、数据库实现

文章目录 分布式锁0-1分布式锁--包含CAP理论模型概述分布式锁&#xff1a;分布式锁应该具备哪些条件&#xff1a;分布式锁的业务场景&#xff1a; 分布式锁的实现方式有&#xff1a;基于Zookeeper - 分布式锁实现思想优缺点基于Redis - 分布式锁实现思想实现思想的具体步骤&…

【LeetCode 热题 HOT 100】题解笔记 —— Day01

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

企业海外分部,如何实现安全稳定的跨境网络互连?

如今&#xff0c;众多企业广泛采取数字化业务系统&#xff0c;如OA、ERP及CRM等&#xff0c;来提升其业务运营效率。同时&#xff0c;私有云与公有云混合架构也逐渐普及化。 具体来说&#xff0c;很多企业选择将研发系统部署在公司本地的私有云环境&#xff0c;以此确保数据安全…

首批!创邻科技入选《图数据库金融应用场景优秀案例》

11月11日&#xff0c;“全球金融科技中心网络年会”在第三届全球金融科技大会暨第五届成方金融科技论坛上成功在京举办。会上&#xff0c;北京前沿金融监管科技研究院发布了基于国际标准组织——国际关联数据基准委员会&#xff08;LDBC&#xff09;的《图数据库金融应用场景优…

路由器DHCP分配IP地址规则

路由器DHCP分配IP地址的机制&#xff1a; 先设置一个IP地址池&#xff0c;假设是192.168.1.100-192.168.1.199一共100个。 来一个请求&#xff0c;看一下是不是以前请求过的地址&#xff0c;如果是&#xff0c;还是返回以前给过的IP&#xff0c;然后将到期时间(有些路由器默认…

【Python3】【力扣题】349. 两个数组的交集

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;集合的交集。两个数组都转为集合&#xff0c;获取集合的交集。 知识点&#xff1a;set(...)&#xff1a;转为集合&#xff0c;集合的元素不重复。 集合1.intersection(集合2)&#xff1a…