数据结构课程设计报告---矩阵的运算
- 格式:doc
- 大小:128.00 KB
- 文档页数:12
数据结构实验报告稀疏矩阵运算实验目的:1.学习并理解稀疏矩阵的概念、特点以及存储方式。
2.掌握稀疏矩阵加法、乘法运算的基本思想和算法。
3.实现稀疏矩阵加法、乘法的算法,并进行性能测试和分析。
实验原理:稀疏矩阵是指矩阵中绝大多数元素为0的矩阵。
在实际问题中,有许多矩阵具有稀疏性,例如文本矩阵、图像矩阵等。
由于存储稀疏矩阵时,对于大量的零元素进行存储是一种浪费空间的行为,因此需要采用一种特殊的存储方式。
常见的稀疏矩阵的存储方式有三元组顺序表、十字链表、行逻辑链接表等。
其中,三元组顺序表是最简单直观的一种方式,它是将非零元素按行优先的顺序存储起来,每个元素由三个参数组成:行号、列号和元素值。
此外,还需要记录稀疏矩阵的行数、列数和非零元素个数。
稀疏矩阵加法的原理是将两个稀疏矩阵按照相同的行、列顺序进行遍历,对于相同位置的元素进行相加,得到结果矩阵。
稀疏矩阵乘法的原理是将两个稀疏矩阵按照乘法的定义进行计算,即行乘以列的和。
实验步骤:1.实现稀疏矩阵的三元组顺序表存储方式,并完成稀疏矩阵的初始化、转置、打印等基本操作。
2.实现稀疏矩阵的加法运算,并进行性能测试和分析。
3.实现稀疏矩阵的乘法运算,并进行性能测试和分析。
4.编写实验报告。
实验结果:经过实验测试,稀疏矩阵的加法和乘法算法都能正确运行,并且在处理稀疏矩阵时能够有效节省存储空间。
性能测试结果表明,稀疏矩阵加法、乘法的运行时间与非零元素个数有关,当非零元素个数较少时,运算速度较快;当非零元素个数较多时,运算速度较慢。
实验分析:稀疏矩阵的运算相对于普通矩阵的运算有明显的优势,可以节省存储空间和运算时间。
在实际应用中,稀疏矩阵的存储方式和运算算法都可以进行优化。
例如,可以采用行逻辑链接表的方式存储稀疏矩阵,进一步减少存储空间的占用;可以采用并行计算的策略加快稀疏矩阵的运算速度。
总结:通过本次实验,我深入学习了稀疏矩阵的概念、特点和存储方式,掌握了稀疏矩阵加法、乘法的基本思想和算法,并通过实验实现了稀疏矩阵的加法、乘法运算。
课程设计任务书一、课程设计题目:矩阵运算二、课程设计工作自2008年9月8日起至2008年9月12日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:(1)两个矩阵加、减、乘等运算(2)对某一矩阵增加一行或一列(3)对某一矩阵减少一行或一列(4)自己再增加一项或两项功能四、课程设计要求:程序质量:贯彻结构化程序设计思想。
用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
用户界面中的菜单至少应包括“输入数据”、“算术运算”、“增行”、“减行”、“退出”5项。
代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:封面课程设计任务书目录需求分析(分析题目的要求)程序流程图(总体流程图和主要功能模块流程图)核心技术的实现说明及相应程序段个人总结参考资料源程序及适当的注释指导教师:学生签名:成绩:教师评语:目录一、需求分析 (1)二、程序流程图 (2)三、核心技术的实现说明及相应程序段 (8)四、个人总结 (18)五、参考资料 (19)六、源程序 (19)一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:加运算函数(jia),减运算函数(jian),乘运算函数(cheng),增行函数(jiahang),减列函数(jianlie)以及求最大值函数(fun)。
在这些函数当中,前五个函数的实现严格按照题目的要求,而最后一个函数为自行设计的函数。
1、增加运算函数主要实现将两矩阵相加的功能;2、减运算函数实现的功能是将两矩阵相减;3、乘运算函数主要实现将两矩阵相乘的功能;4、增行函数实现的是在所选的矩阵中增加一行的功能;5、减列函数实现的是在所选的矩阵中减掉一列的功能;6、求取最大值函数实现的功能是找到并输出所给矩阵最大值。
程序的一次运行当中可以循环执行所有的功能,并根据需要终止程序的执行。
课程设计题目矩阵乘法教学院计算机学院专业09计算机科学与技术班级姓名指导教师年月日目录1 概述 (3)2 设计目的 (3)3 设计功能说明 (3)4 详细设计说明 (3)5 流程图 (4)6 调试及结果 (5)1程序调试 (5)2运行编译连接过程......................................................... 5-8 7 总结 (9)附录...........................................................................10-24 参考文献 (25)成绩评定表 (26)1 概述数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。
通过课程设计,不仅可以加深学生对数据结构基本概念的了解,巩固学习成果,还能够提高实动手力。
为学生后继课程的学习打下良好的基础。
2 设计目的《数据结构》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
通过程序的编译掌握对程序的调试方法及思想,并且让学生学会使用一些编程技巧。
促使学生养成良好的编程习惯。
1.使学生能够较全面地巩固和应用课堂中所学的的基本理论和程序设计方法,能够较熟练地完成程序的设计和调试。
2.培养学生综合运用所学知识独立完成程序课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
数学矩阵算法范文一、基本概念1.矩阵:矩阵是一个按照长方阵列排列的数,可以表示为一个m×n 的矩阵,其中m表示矩阵的行数,n表示矩阵的列数。
矩阵中的每个元素都可以用一个小写字母表示,例如A或B。
2.矩阵的运算:矩阵的运算包括加法、减法、乘法等操作。
两个相同大小的矩阵可以进行加法和减法,其结果矩阵的对应元素分别是原始矩阵对应元素的和或差。
矩阵的乘法也是常见的操作,它的结果是一个新的矩阵,其中每个元素是原始矩阵中对应行和对应列元素的乘积之和。
3.矩阵的转置:矩阵的转置是将矩阵的行和列互换得到的新矩阵。
转置后的矩阵以T表示,例如A的转置表示为AT。
二、常用操作1.矩阵的加法:两个相同大小的矩阵可以进行加法运算,即对应位置的数字相加。
例如,矩阵A和矩阵B的加法运算可以表示为C=A+B,其中C的元素等于A和B的对应元素之和。
2.矩阵的减法:两个相同大小的矩阵可以进行减法运算,即对应位置的数字相减。
例如,矩阵A和矩阵B的减法运算可以表示为C=A-B,其中C的元素等于A和B的对应元素之差。
3.矩阵的乘法:两个矩阵的乘法需要满足第一个矩阵的列数等于第二个矩阵的行数。
例如,矩阵A为m×n矩阵,矩阵B为n×p矩阵,则A和B的乘积表示为C=AB,其中C为一个m×p的矩阵,其中C的第i行第j 列元素等于A的第i行和B的第j列元素乘积之和。
4.矩阵的转置:矩阵的转置是矩阵的行和列互换得到的新矩阵。
例如,矩阵A的转置表示为AT。
三、应用领域1.线性代数:矩阵在线性代数中有广泛的应用,例如求解线性方程组、求解特征值和特征向量、计算矩阵的逆等。
2.概率论与统计学:矩阵在概率论和统计学中有重要的应用,例如用矩阵来表示随机变量的联合分布矩阵、协方差矩阵等。
3.图论:矩阵在图论中用于表示图的邻接矩阵、路径矩阵等,通过矩阵运算可以解决图论中的一些问题,如最短路径、最小生成树等。
4.信号处理:矩阵在信号处理中被广泛应用,例如用矩阵来表示信号的采样矩阵、变换矩阵等,通过矩阵运算可以实现信号的滤波、降噪、压缩等处理。
c语言课程设计矩阵运算一、教学目标本节课的教学目标是使学生掌握C语言实现矩阵运算的基本方法,包括矩阵的创建、矩阵的加减法、矩阵的转置以及矩阵的乘法。
知识目标要求学生理解矩阵运算的数学原理,能够运用C语言实现矩阵的基本运算;技能目标要求学生熟练使用C语言进行矩阵运算的编程实践;情感态度价值观目标则是培养学生的逻辑思维能力,提高学生对计算机编程的兴趣。
二、教学内容本节课的教学内容主要包括矩阵运算的数学原理介绍、C语言实现矩阵运算的编程实践和代码调试。
教学大纲安排如下:1.引入矩阵的概念和矩阵运算的基本定义。
2.讲解矩阵的创建、矩阵的加减法、矩阵的转置以及矩阵的乘法的数学原理。
3.引导学生运用C语言实现矩阵的基本运算。
4.通过编程实践和代码调试,使学生熟练掌握C语言实现矩阵运算的方法。
三、教学方法本节课采用讲授法、讨论法和实验法相结合的教学方法。
首先,通过讲授法向学生讲解矩阵运算的数学原理和C语言实现方法;其次,通过讨论法引导学生相互交流和讨论,提高他们对矩阵运算的理解;最后,通过实验法让学生动手实践,调试代码,提高他们的编程能力。
四、教学资源本节课的教学资源主要包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于为学生提供理论知识和编程技巧;多媒体资料用于辅助讲解和演示矩阵运算的原理和实现方法;实验设备则是学生进行编程实践和代码调试的必要工具。
五、教学评估本节课的教学评估主要包括平时表现、作业和考试三个部分。
平时表现主要评估学生在课堂上的参与程度、提问和回答问题的积极性等;作业则是对学生掌握矩阵运算能力的考察,要求学生独立完成并提交;考试则是对学生综合运用C语言实现矩阵运算能力的评估,包括理论知识和编程实践。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本节课的教学安排如下:总共安排4个课时,第1课时介绍矩阵运算的数学原理,第2课时讲解C语言实现矩阵运算的方法,第3课时进行编程实践和代码调试,第4课时进行教学评估。
c 课程设计矩阵运算一、教学目标本节课的教学目标是让学生掌握矩阵的基本运算,包括矩阵的加法、减法、数乘以及矩阵的乘法。
通过学习,学生应能理解矩阵运算的定义和规则,并能运用这些运算解决实际问题。
此外,学生还应掌握矩阵运算的数学原理,提高逻辑思维和数学运算能力。
在情感态度价值观方面,学生应培养对数学学科的兴趣,增强自信心,培养团队合作精神。
二、教学内容本节课的教学内容主要包括矩阵的基本运算和数学原理。
首先,介绍矩阵的加法、减法、数乘和矩阵的乘法,通过举例说明这些运算的定义和规则。
然后,讲解矩阵运算的数学原理,包括线性方程组的解法、行列式的计算以及矩阵的逆矩阵。
最后,通过实际案例让学生运用矩阵运算解决实际问题,提高学生的应用能力。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。
首先,采用讲授法,清晰地讲解矩阵运算的定义和规则,以及数学原理。
其次,采用讨论法,让学生分组讨论矩阵运算的应用案例,培养学生的思考和表达能力。
此外,还采用案例分析法,让学生分析实际问题,运用矩阵运算解决问题。
最后,通过实验法,让学生动手实践,加深对矩阵运算的理解。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源。
首先,教材和相关参考书,为学生提供系统的学习资料。
其次,多媒体资料,如PPT、教学视频等,用于直观地展示矩阵运算的过程和应用案例。
此外,还将提供实验设备,如计算器、电脑等,让学生进行实际操作,提高实践能力。
通过丰富多样的教学资源,丰富学生的学习体验,提高学习效果。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
评估方式包括平时表现、作业、考试等。
平时表现主要评估学生的课堂参与度、提问回答等,通过观察学生的表现来了解他们的学习状态。
作业方面,将布置适量的练习题,要求学生在规定时间内完成,通过批改作业了解学生对矩阵运算的理解和掌握程度。
考试方面,将设置期中考试和期末考试,考试内容涵盖本节课的全部知识点,通过考试来检验学生的学习成果。
数据结构课程设计报告题目:专业:班级:学号:姓名:指导老师:时间:一、课程设计题目及所涉及知识点设计题目是“矩阵的运算”,所涉及的知识点主要是:1、数据结构中的对于结构体的定义,用typedef struct来实现,根据所设计的问题在结构体里面定义数据类型及其变量,用define定义数组的大小,然后利用typedef 来实现对于变量的未知类型确定正确的类型。
2、利用数组的形式来储存数据,在实现不同操作过程中,有的用一维结构体数组(三元组顺序表)来存储,有的用二维数组来储存。
3、转置的过程中利用的是快速转置的方法,附设了num和cpot两个辅助变量。
4、矩阵的加法、减法、乘法、逆运算的基本算法方式。
5、通过调用每个函数,来实现每个算法的功能。
二、课程设计思路及算法描述设计思路:1、首先是对于转置的考虑,要运用快速转置的方法实现,必须用三元组顺序表来储存数据,所以在第一个结构体中存在int类型的行数(mu)列数(nu)以及非零元素的个数(tu);然后第二个结构体中分别有非零元素的行下标(i)、列下标(j)和元素数值(e),最后在第一个结构体中实现对第二个结构体成为数组结构体类型。
2、对于其余加法、减法、乘法和逆运算则是运用另一个结构体来实现,里面只有矩阵的行数、列数和一个二维数组(用float来定义类型)。
3、在main函数里面,来实现对于数据的输入操作,利用if语句进行选择来执行操作,利用do……while语句来实现功能的循环操作。
4、分五个函数调用分别来实现转置、加法、乘法、和逆运算,每个里面都有最终输出结果的方式。
算法1:矩阵的转置输入:mu中存放矩阵的行数,tu存放矩阵的列数,i接收行下标的数值,j接收列下标的数值,e来存储数据。
输出:转置后的新矩阵。
输入两行两列数据,在第二行第一列中有个数据为12,其余都为0,则输出的结果为第一行第二列数据为12,其余为0。
算法2:矩阵的加法运算输入:i中存放矩阵的行数,j中存放矩阵的列数,二维数组b中存放每个数据。
矩阵运算实验报告实验目的:通过矩阵运算实验,探究矩阵的基本运算规则、性质及应用,并加深对矩阵运算的理解。
实验原理:矩阵是一个由元素按照行和列排列成的矩形阵列,可以进行加法、减法、乘法等基本的运算。
矩阵的加法与减法满足交换律、结合律和分配律;矩阵的乘法满足结合律、分配律和左乘右乘不一定相等的性质。
实验步骤:1. 实验前的准备:准备两个矩阵A和B,并确定其维度。
2. 进行矩阵加法运算:将矩阵A与矩阵B的对应元素相加,得到新的矩阵C。
3. 进行矩阵减法运算:将矩阵A与矩阵B的对应元素相减,得到新的矩阵D。
4. 进行矩阵乘法运算:将矩阵A的行元素与矩阵B的列元素对应相乘,并将结果相加,得到新的矩阵E。
5. 对矩阵进行转置:将矩阵A的行与列互换,得到新的矩阵F。
6. 求矩阵的逆:若矩阵A可逆,则找到矩阵A的逆矩阵G。
实验结果:1. 矩阵加法运算的结果:得到新的矩阵C,其维度与矩阵A和B相同,且C(i,j) = A(i,j) + B(i,j)。
2. 矩阵减法运算的结果:得到新的矩阵D,其维度与矩阵A和B相同,且D(i,j) = A(i,j) - B(i,j)。
3. 矩阵乘法运算的结果:得到新的矩阵E,其维度为A的行数乘以B的列数,且E(i,j) = Σ(A(i,k)*B(k,j)),k的取值范围为1到B的行数(或A的列数)。
4. 矩阵转置的结果:得到新的矩阵F,其维度与矩阵A相反,即F的行数等于A的列数,F的列数等于A的行数,且F(i,j) = A(j,i)。
5. 矩阵逆矩阵的结果:得到新的矩阵G,其与矩阵A的乘积为单位矩阵,即A*G = G*A = I,其中I为单位矩阵。
实验分析:1. 从矩阵加法与减法运算的结果可以看出,矩阵的加法和减法满足交换律、结合律和分配律。
这说明矩阵加法和减法具有良好的运算性质。
2. 从矩阵乘法运算的结果可以看出,矩阵的乘法满足结合律和分配律,但左乘右乘不一定相等,即AB≠BA。
序号:学号:------------课程设计设计课程名称:C语言课程设计题目:矩阵的运算学生姓名:**********学院(系):********* 专业班级:*********指导教师:******* 专业技术职务:设计时间:**** 年* 月** 日 ****年* 月**日目录1.矩阵运算任务书 (3)2.描述及绘制出系统的功能结构框图 (7)3.C语言程序代码 (8)4.使用说明 (15)5.设计日志及心得体会 (16)"矩阵运算"任务书一、目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个矩阵运算子程序集,并能最终实现本系统的功能要求。
二、功能要求【题目描述】矩阵运算是大多数科学运算的必要工具。
假定所有矩阵均以文本文件形式保存,试编写程序,处理简单的矩阵运算。
矩阵文件每一行以文本保存矩阵中一行数据每个数据之间以一个或者多个空格隔开。
目前矩阵仅保存整数值。
下面是一个矩阵文件例子:文件名:matrix1.txt1 123 -43 1 -14 52 0 0 5 65 6 7 8 910 11 12 14 13你的程序需要实现以下功能:1.矩阵加法。
2.矩阵转置3.矩阵乘法【程序要求】(1)程序正确。
能够严格实现任务书中描述的功能;(2)界面友好。
尽可能使界面友好、直观、易操作;(3)风格友好。
源程序应有良好的编码风格,使程序容易阅读。
(4)从文件中读矩阵,将矩阵写入文件,矩阵3个操作均需要以子程序形式编写。
【输入/输出要求】(1)每项功能在选择后,应提示用户输入源矩阵所在文件名,并检验该文件是否存在,但是并不读取该文件内容。
然后再提示用户输入结果矩阵文件名。
通过子程序读取矩阵数据,将运算结果同时输出到文件和屏幕上。
(2)所有源矩阵均可使用记事本生成。
(3)若main函数带有参数repeat则所有读取矩阵和运算函数操作均需重复10000次。
数据结构课程设计报告题目:专业:班级:学号:姓名:指导老师:时间:一、课程设计题目及所涉及知识点设计题目是“矩阵的运算”;所涉及的知识点主要是:1、利用数组的形式来储存数据,在main函数里面,实现对于数据的输入操作,利用switch语句进行选择来执行操作,利用for语句与do……while语句来实现功能的循环操作。
2、矩阵的加法、减法、乘法、数乘、转置的基本算法方式。
3、通过switch语句进行选择来执行操作,来实现每个算法的功能。
二、课程设计思路及算法描述设计思路:用程序实现矩阵能够完成矩阵的转置运算;矩阵的数乘运算;矩阵的加法运算;矩阵的减法运算;矩阵的乘法运算;这几种矩阵的简单的运算。
用数组把将要运算的矩阵储存起来,然后实现矩阵的这几种运算。
在main函数里面,来实现对于数据的输入操作,利用switch语句进行选择来执行操作,利用for语句来实现功能的循环操作。
算法:算法1:矩阵的转置运算;首先是把将要运算的矩阵存放在数组中,矩阵的转置运算,就是把你将要进行运算的A矩阵的行ar和列ac,把A矩阵的行ar作为B矩阵的bc,A矩阵的列ac作为B矩阵的br,这样得到的新矩阵B的行br和列bc就是矩阵A的转置。
算法如下:for(i=0;i<ar;i++)for(j=0;j<ac;j++)B[j][i]=A[i][j];算法2:矩阵的数乘运算;首先是把将要运算的矩阵存放在数组中,矩阵的数乘运算,就是实现用一个实数k去A矩阵。
实数k去乘矩阵的每一行和每一列,得到的一个新的矩阵B,这样就解决了矩阵的数乘运算。
算法如下:for(i=0;i<ar;i++)for(j=0;j<ac;j++)B[i][j]=k*A[i][j];算法3:矩阵的加法运算;首先是把将要运算的矩阵存放在数组中,矩阵的加法运算,就是要实现A矩阵与B 矩阵进行加法运算。
事实上就是A矩阵的每一行ar与B矩阵的每一行br进行加法运算,而得到的一个新的矩阵C的每一行cr就是A矩阵的ar行与B矩阵的br行的和;A矩阵的每一列ac与B矩阵的每一列bc进行加法运算,而得到的一个新的矩阵C的每一列cc 就是A矩阵的ac列与B矩阵的bc列的和。
这样就实现了A矩阵与B矩阵的加法运算。
算法如下:ar=br;ac=bc;for(i=0;i<ar;i++)for(j=0;j<ac;j++)C[i][j]=A[i][j]+B[i][j];算法4:矩阵的减法运算;首先是把将要运算的矩阵存放在数组中,矩阵的减法运算,就是要实现A矩阵与B 矩阵进行减法运算。
事实上就是A矩阵的每一行ar与B矩阵的每一行br进行减法运算,而得到的一个新的矩阵C的每一行cr就是A矩阵的ar行与B矩阵的br行的差;A矩阵的每一列ac与B矩阵的每一列bc进行减法运算,而得到的一个新的矩阵C的每一列cc 就是A矩阵的ac列与B矩阵的bc列的差。
这样就实现了A矩阵与B矩阵的减法运算。
算法如下:ar=br;ac=bc;for(i=0;i<ar;i++)for(j=0;j<ac;j++)C[i][j]=A[i][j]-B[i][j];算法5:矩阵的乘法运算;首先是把将要运算的矩阵存放在数组中,矩阵的乘法运算,就是要实现A矩阵与B 矩阵进行乘法运算。
只有当进行运算的A矩阵的列ac等于B矩阵的行br时,两个矩阵才能进行运算,而得到的结果C矩阵要等于A矩阵的行ar和B矩阵的列bc。
这样就实现了两个矩阵的乘法运算。
算法如下:cr=ar;cc=bc;for(i=0;i<ar;i++)for(j=0;j<bc;j++)for(k=0;k<ac;k++)C[i][j]+=A[i][k]*B[k][j];三、课程设计中遇到的难点及解决办法遇到的难点:如何实现两个矩阵进行乘法运算;解决办法:(1)通过分析代码的运行过程,然后和同学一起交流,通过在网上查找的资料,来解决遇到的问题,然后在进行运行。
(2)就是对于矩阵的乘法运算,因为掌握的知识不是很熟练,通过查阅书籍相关的算法,再结合手中的资料,认真的分析,然后进行实现,多次试验后解决了该问题。
四、总结通过这次的课程设计,发现了自己有很多不足的地方,更加深了对数组的存储以及相关的算法的实现,更加认识到要努力自己解决问题,无论是通过书籍还是网络资料,自己动手实践,这样更能加深印象,加强记忆,也能认识到自己的不足,促使自己不得不去提高自己的编程水平,每一次的实践都是对自己的能力的检测,都是一次宝贵的经验,这也是学习的一种有效方式。
在不断实验中提高了自己独立思考的能力和独立自主的动手能力;还有在不断学习中,让我认识到实践的重要性,老师的精心指导让我学会到了很多,不仅仅是代码,最主要的让我的思维开阔了很多,在这个过程中,通过不断的尝试,不断的修改,最终克服了困难,完成了自己的任务。
我还了解了必须不断地虚心请教与不断地从各个途径学习了解知识,才能不断充实自己,提高自己。
五、附录—主要源程序代码及运行结果源代码:#include<stdio.h>float A[20][20];float B[20][20];float C[20][20];float y=1.0;void main( ){ int ar=0,ac=0,br=0,bc=0,cr=0,cc=0 ;int x,i=0,j=0,k=0;do {printf("*******************************************************\n");printf("1.表示矩阵转置:\n");printf("2.表示数乘矩阵:\n");printf("3.表示矩阵的加法:\n");printf("4.表示矩阵的减法:\n");printf("5.表示矩阵的乘法:\n");printf("6.表示退出:\n");printf("*******************************************************\n"); printf("请选择您需要的运算:\n");scanf("%d",&x);switch (x){case 1: {printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:\n"); scanf("%d,%d",&ar,&ac);printf("请输入矩阵A用空格隔开:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++)scanf("%f",&A[i][j]);printf("输出矩阵A:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",A[i][j]);if((j+1)%ac==0)printf("\n"); }for(i=0;i<ar;i++)for(j=0;j<ac;j++)B[j][i]=A[i][j];printf("输出矩阵A的转置矩阵:\n");for(j=0;j<ac;j++)for(i=0;i<ar;i++){ printf("%10.2f",B[j][i]);if((i+1)%ar==0)printf("\n"); }} ;break;case 2:{ float k;printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:\n"); scanf("%d,%d",&ar,&ac);printf("请输入矩阵A用空格隔开:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++)scanf("%f",&A[i][j]);printf("输出矩阵A\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",A[i][j]);if((j+1)%ac==0)printf("\n"); }printf("请输入一个实数:\n");scanf("%f",&k);for(i=0;i<ar;i++)for(j=0;j<ac;j++)B[i][j]=k*A[i][j];printf("输出k乘矩阵A的结果\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",B[i][j]);if((j+1)%ac==0)printf("\n"); }};break;case 3:{printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:"); scanf("%d,%d",&ar,&ac);printf("请输入你要进行运算的矩阵B的行数和列数以逗号隔开:") ; scanf("%d,%d",&br,&bc);if(ar!=br||ac!=bc)printf("您输入的两个矩阵不能相加,请重新输入!\n");else printf("请输入矩阵A用空格隔开:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++)scanf("%f",&A[i][j]);printf("输出矩阵A:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",A[i][j]);if((j+1)%ac==0)printf("\n"); }printf("请输入矩阵B用空格隔开:\n"); for(i=0;i<br;i++)for(j=0;j<bc;j++)scanf("%f",&B[i][j]);printf("输出矩阵B:\n");for(i=0;i<br;i++)for(j=0;j<bc;j++){ printf("%10.2f",B[i][j]);if((j+1)%bc==0)printf("\n"); }printf("矩阵A+矩阵B等于:\n");ar=br;ac=bc;for(i=0;i<ar;i++)for(j=0;j<ac;j++)C[i][j]=A[i][j]+B[i][j];for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",C[i][j]);if((j+1)%ac==0)printf("\n"); }};break;case 4:{printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:\n"); scanf("%d,%d",&ar,&ac);printf("请输入你要进行运算的矩阵B的行数和列数以逗号隔开:\n"); scanf("%d,%d",&br,&bc);if(ar!=br||ac!=bc)printf("您输入的两个矩阵不能相减,请重新输入!\n");else printf("请输入矩阵A用空格隔开:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++)scanf("%f",&A[i][j]);printf("输出矩阵A:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",A[i][j]);if((j+1)%ac==0)printf("\n"); }printf("请输入矩阵B用空格隔开:\n"); for(i=0;i<br;i++)for(j=0;j<bc;j++)scanf("%f",&B[i][j]);printf("输出矩阵B:\n");for(i=0;i<br;i++)for(j=0;j<bc;j++){ printf("%10.2f",B[i][j]);if((j+1)%bc==0)printf("\n");}printf("矩阵A-矩阵B等于:\n");ar=br;ac=bc;for(i=0;i<ar;i++)for(j=0;j<ac;j++)C[i][j]=A[i][j]-B[i][j];for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",C[i][j]);if((j+1)%ac==0)printf("\n"); }};break;case 5:{printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:\n"); scanf("%d,%d",&ar,&ac);printf("请输入你要进行运算的矩阵B的行数和列数以逗号隔开:\n"); scanf("%d,%d",&br,&bc);if(ac!=br)printf("您输入的两个矩阵不能相乘,请重新输入!\n");else printf("请输入矩阵A用空格隔开:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++)scanf("%f",&A[i][j]);printf("输出矩阵A:\n");for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%10.2f",A[i][j]);if((j+1)%ac==0)printf("\n"); }printf("请输入矩阵B用空格隔开:\n");for(i=0;i<br;i++)for(j=0;j<bc;j++)scanf("%f",&B[i][j]);printf("输出矩阵B:\n");for(i=0;i<br;i++)。