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

矩阵的运算

目标:实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。

(1)以三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减、相乘的运算

(2)稀疏矩阵的输入形式为三元组表示,运算结果则以通常的阵列形式列出。

(3)首先提示用户输入矩阵的行数和列数,并判别给出的两个矩阵行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。

(4)程序需给出菜单项,用户按照菜单提示进行相应的操作。

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
void menu()
{printf("****************************************************************\n");printf("****************************************************************\n");printf("**********************欢迎使用矩阵计算器************************\n");printf("*******1、转置                               2、加法      ******\n");printf("*******3、减法                               4、数乘      ******\n");printf("*******5、乘法                               0、退出     *******\n");printf("****************************************************************\n");printf("****************************************************************\n");
}void  Matrix_output(int(*s)[100], int m, int n)//输出
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){printf("%2d ", s[i][j]);}printf("\n");}
}void  Matrix_transpose(int(*s)[100], int(*t)[100], int m, int n)//转置
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){t[j][i] = s[i][j];}}
}
void Matrix_addition(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相加
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){p[i][j] = s[i][j] + t[i][j];}}
}void Matrix_subtraction(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相减
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){p[i][j] = s[i][j] - t[i][j];}}
}void Matrix_shucheng(int(*s)[100], int(*t)[100], int m, int n, int k)//数乘
{int i, j;for (i = 0; i < m; i++){for (j = 0; j < n; j++){t[i][j] = k * s[i][j];}}
}void Matrix_multiplication(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n, int x, int y)//相乘
{int i, j, k, sum;for (i = 0; i < m; i++){for (j = 0; j < y; j++){sum = 0;for (k = 0; k < n; k++){sum += s[i][k] * t[k][j];}p[i][j] = sum;}}
}int main()
{int m, n, i, j, k, input;int x, y;int A[100][100], B[100][100], C[100][100];do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1://转置printf("请输入矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("原矩阵:\n");Matrix_output(A, m, n);Matrix_transpose(A, B, m, n);printf("转置后的矩阵:\n");Matrix_output(B, n, m);break;case 2://相加printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (m == x && n == y){printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, m, n);Matrix_addition(A, B, C, m, n);printf("和矩阵:\n");Matrix_output(C, m, n);}else{printf("这两个矩阵不是同型矩阵,不能相加\n");}break;case 3:printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入第一个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (m == x && n == y){printf("请输入第二个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, m, n);Matrix_subtraction(A, B, C, m, n);printf("差矩阵:\n");Matrix_output(C, m, n);}else{printf("这两个矩阵不是同型矩阵,不能相减\n");}break;case 4:printf("请输入矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入这个数:>");scanf("%d", &k);printf("\n");printf("请输入矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("原矩阵:\n");Matrix_output(A, m, n);Matrix_shucheng(A, B, m, n, k);printf("数乘矩阵:\n");Matrix_output(B, m, n);break;case 5:printf("请输入第一个矩阵的行数:> ");scanf("%d", &m);printf("\n");printf("请输入第一个矩阵的列数:> ");scanf("%d", &n);printf("\n");printf("请输入第一个矩阵:\n");for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &A[i][j]);}}printf("请输入第二个矩阵的行数:> ");scanf("%d", &x);printf("\n");printf("请输入第二个矩阵的列数:> ");scanf("%d", &y);printf("\n");if (n == x){printf("请输入第二个矩阵:\n");for (i = 0; i < x; i++){for (j = 0; j < y; j++){scanf("%d", &B[i][j]);}}printf("第一个矩阵:\n");Matrix_output(A, m, n);printf("第二个矩阵:\n");Matrix_output(B, x, y);Matrix_multiplication(A, B, C, m, n, x, y);printf("相乘矩阵:\n");Matrix_output(C, m, y);}else{printf("这两个矩阵不能相乘\n");}break;case 0:printf("退出计算,欢迎再次使用\n");break;default:printf("输入错误,请从新输入\n");break;}} while (input);return 0;
}

出菜单项,用户按照菜单提示进行相应的操作。

相关文章:

矩阵的运算

目标&#xff1a;实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。 &#xff08;1&#xff09;以三元组顺序表表示稀疏矩阵&#xff0c;实现两个矩阵相加、相减、相乘的运算 &#xff08;2&#xff09;稀疏矩阵的输入形式为三元组表示&#xff0c;运算结果则以通常…...

Android 获取SIM卡号码权限申请

1.添加权限 在AndroidManifest.xml中添加如下权限 <uses-permission android:name"android.permission.READ_PHONE_STATE"/> 2.获取权限 如果你只在清单文件中添加权限却没有在代码中获取权限&#xff0c;代码还是会报错的。 报错原因&#xff1a; android…...

Linux CentOS 本地yum配置

本地开发用虚拟机&#xff0c;因为有光盘镜像在手&#xff0c;并不需要联网安装组件&#xff0c;只需要设置一下就可以让yum从本地获取源。 将安装盘挂载在合适位置 mount /dev/cdrom /mnt 进入目录 cd /etc/yum.repos.d/ 修改CentOS-Media.repo里面的挂载路径 …...

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️函数重载☁️函数重载的概念☁️函数重载的作用☁️C支持函数重载的原理…...

ubuntu 安装串口工具和添加虚拟串口

目录 一、串口工具安装 二、使用Windows本身虚拟的串口 &#xff08;一&#xff09;添加串口 1、保证虚拟机是关闭状态&#xff0c;打开“虚拟机设置”&#xff0c;点击“添加”。 2、选中“串行端口”&#xff0c;点击“完成”。 3、选中刚添加的串口&#xff0c;下拉选…...

【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表结构体初始化元素设置打印矩阵主函数输出结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串&#xff08;一&#xff…...

为什么POST请求经常发送两次?

大多数初级前端程序员&#xff0c;在通过浏览器F12的调试工具调试网络请求时&#xff0c;可能都会有一个发现&#xff0c;在进行POST请求时&#xff0c;明明代码里只请求了一次&#xff0c;为什么network里发送了两次呢&#xff0c;难道我代码出bug了&#xff1f;带着疑问点开第…...

打破总分行数据协作壁垒,DataOps在头部股份制银行的实践|案例研究

从银行开始建设数据仓库至今已近20年&#xff0c;当前各银行机构在数据能力建设中面临诸多困扰&#xff1a;如何保证数据使用时的准确性&#xff1f;如何让数据敏捷响应业务变化&#xff1f;如何让更多的业务人员使用数据&#xff1f; 这些问题极大影响了经营指标的达成与业务…...

测试用例的设计方法(全):边界值分析方法

一.方法简介 1.定义&#xff1a;边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充&#xff0c;这种情况下&#xff0c;其测试用例来自等价类的边界。 2.与等价划分的区别 1)边界值分析不是从某等价类中随便挑…...

酷开科技 | 酷开系统沉浸式大屏游戏更解压!

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…...

读高性能MySQL(第4版)笔记20_Performance Schema和其他

1. 线程 1.1. MySQL服务端是多线程软件。它的每个组件都使用线程 1.2. 每个线程至少有两个唯一标识符 1.2.1. 操作系统线程ID 1.2.2. MySQL内部线程ID 2. 对象类型 2.1. OBJECT_TYPE列 2.2. EVENT 2.3. FUNCTION 2.4. PROCEDURE 2.5. TABLE 2.6. TRIGGER 3. Perfor…...

spring cloud Eureka集群模式搭建(IDEA中运行)《二》

上一篇集群配置文件完善 上一篇博客&#xff0c;想必大家都学会了Eureka集群模式的搭建和运行&#xff0c;针对上一篇的配置文件进行了优化&#xff0c;在这里分享给大家。上一篇主要有3个配置文件&#xff0c;分别对应3个不同的服务&#xff0c;这种形式配置文件分别写在了不…...

大模型(LLM)在电商推荐系统的探索与实践

本文对LLM推荐的结合范式进行了梳理和讨论&#xff0c;并尝试将LLM涌现的能力迁移应用在推荐系统之中&#xff0c;利用LLM的通用知识来辅助推荐&#xff0c;改善推荐效果和用户体验。 背景 电商推荐系统&#xff08;Recommend System&#xff0c;RecSys&#xff09;是一种基于…...

C语言之指针详解

目录 地址 指针的定义和使用 数组与指针的区别与联系 字符串与指针的用法 C 中的 NULL 指针 指针的算术运算 指向指针的指针 传递指针给函数 从函数返回指针 在学习指针之前&#xff0c;我们先弄清楚一个概念&#xff1a; 地址 地址在计算机内存中是一个唯一的标识符…...

【Java笔记+踩坑】设计模式——原型模式

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客​ 目录 零、经典的克隆羊问题&#xff08;复制10只属性相同的羊&#xff09; 一、传统方案&#xff1…...

Flutter GetX使用详解

介绍 GetX是一款功能强大且轻量级的Flutter状态管理和路由管理库。它提供了一种简单而强大的方式来构建Flutter应用程序&#xff0c;无需大量的模板代码。GetX不仅提供了状态管理和路由管理&#xff0c;还包括其他实用工具&#xff0c;如国际化和依赖注入。 在本文中&#xf…...

【ARM Coresight 系列文章 3.3 - ARM Coresight SWD 协议详细介绍】

文章目录 1.1 SWD 协议框图1.2 读/写时序及命令1.2.1 SWD 时序1.2.2 SWD 命令详情1.3 芯片探测1.3.1 获取芯片 ID1.4 读/写操作1.1 SWD 协议框图 SWD协议可以配置SoC内部几乎所有的寄存器。时钟信号由SWCLK 管脚输入,数据信号从SWDIO管脚输入输出。首先 HOST 对SW-DP 进行操作…...

作为开发者,可视化开发工具了解一下

你是否为编程世界的各种挑战感到头痛&#xff1f;想要以更高效、简单的方式开发出专业级的项目&#xff1f; JNPF低代码工具正是你苦心寻找的产品&#xff01;它是一款专为稍微懂一点点编程思想的入门级人员设计的神奇工具&#xff0c;集成了丰富的功能和组件&#xff0c;让你轻…...

Python:实现日历功能

背景 日常生活中&#xff0c;每天都要用到日历&#xff0c;日历成为我们生活中的必需品&#xff0c;那么如何制作日历呢&#xff0c;其实方法有很多&#xff0c;可以直接在excel中制作&#xff0c;也可以手画等等。 学习过编程的朋友&#xff0c;能否想到用Python编写一…...

2.9.C++项目:网络版五子棋对战之业务处理模块的设计

文章目录 一、意义二、功能三、管理&#xff08;一&#xff09;客户端请求&#xff08;二&#xff09;websocket 四、框架五、完整代码 一、意义 将所有的模块整合在一起&#xff0c;通过网络通信获取到客户端的请求&#xff0c;提供不同的业务处理。 服务器模块&#xff0c;是…...

Nunchaku FLUX.1 CustomV3镜像免配置:预装ComfyUI+Custom Workflow+LoRA权重一体化方案

Nunchaku FLUX.1 CustomV3镜像免配置&#xff1a;预装ComfyUICustom WorkflowLoRA权重一体化方案 想体验最新的AI绘画模型&#xff0c;但被复杂的安装、配置和模型下载劝退&#xff1f;今天给大家介绍一个“开箱即用”的终极方案——Nunchaku FLUX.1 CustomV3镜像。它把文生图…...

探索声发射 b 值:Matlab 程序之旅

声发射b值&#xff0c;Matlab程序在材料科学和岩石力学等领域&#xff0c;声发射&#xff08;Acoustic Emission&#xff0c;AE&#xff09;技术是研究材料内部损伤演化的重要手段。而声发射 b 值作为其中一个关键参数&#xff0c;能反映材料内部微破裂的特征。今天&#xff0c…...

PingFangSC字体实战指南:从基础配置到性能优化全攻略

PingFangSC字体实战指南&#xff1a;从基础配置到性能优化全攻略 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC PingFangSC&#xff08;苹果平方简体&am…...

智汇云舟亮相2026中关村论坛 联合发起“通智行业大脑”联盟

3月29日&#xff0c;作为中关村论坛年会的重要组成部分&#xff0c;“迈向通用人工智能”平行论坛在中关村国家自主创新示范区展示交易中心隆重举行。本次论坛由北京市科学技术委员会、中关村科技园区管理委员会、北京市海淀区人民政府联合主办&#xff0c;北京通用人工智能研究…...

构建实时体积渲染管线:Unreal VDB插件深度解析与实践指南

构建实时体积渲染管线&#xff1a;Unreal VDB插件深度解析与实践指南 【免费下载链接】unreal-vdb This repo is a non-official Unreal plugin that can read OpenVDB and NanoVDB files in Unreal. 项目地址: https://gitcode.com/gh_mirrors/un/unreal-vdb 在实时渲染…...

别再手动排版了!用LaTeX + TikZ 5分钟搞定高中数学试卷里的立体几何图

用LaTeXTikZ高效绘制数学试卷中的立体几何图形 数学试卷排版一直是教师们的痛点&#xff0c;尤其是立体几何图形的绘制。传统方法要么依赖专业绘图软件导出图片插入&#xff0c;要么直接在Word中用绘图工具勉强拼凑&#xff0c;不仅效率低下&#xff0c;修改起来更是噩梦。其实…...

51单片机项目避坑实录:我的声光控灯为什么白天也亮?从硬件到代码的故障排查指南

51单片机声光控灯项目实战&#xff1a;从硬件选型到代码调试的深度避坑指南 深夜的实验室里&#xff0c;我盯着眼前这个不听话的声光控灯——明明窗外阳光明媚&#xff0c;它却固执地亮着。作为一名嵌入式开发新手&#xff0c;这个看似简单的51单片机项目让我踩遍了所有可能的坑…...

音频工程师必看:奈奎斯特采样定理在实际录音中的5个常见误区

音频工程师必看&#xff1a;奈奎斯特采样定理在实际录音中的5个常见误区 在专业音频制作领域&#xff0c;采样率设置是决定录音质量的基础性环节。许多工程师虽然熟悉44.1kHz或48kHz这些标准数字&#xff0c;却对背后的奈奎斯特采样定理存在认知偏差。这些误解轻则导致后期处理…...

WaveTools鸣潮工具箱实战指南:从画质优化到抽卡策略的新视角

WaveTools鸣潮工具箱实战指南&#xff1a;从画质优化到抽卡策略的新视角 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 当我在宿舍用老旧笔记本玩《鸣潮》时&#xff0c;画面卡顿得连技能都放不连贯&…...

Linux实战——Finalshell高效连接与服务器管理

1. 为什么选择Finalshell管理Linux服务器 第一次接触Linux服务器管理时&#xff0c;我试过好几种连接工具。从最基础的Putty到Xshell&#xff0c;再到MobaXterm&#xff0c;最后发现Finalshell才是真正适合中国开发者的神器。它不仅免费&#xff0c;还集成了SSH连接、文件传输、…...