数据结构课程设计报告---矩阵的运算

合集下载

矩阵的加法运算问题-数据结构与算法课程设计报告

矩阵的加法运算问题-数据结构与算法课程设计报告

合肥学院计算机科学与技术系课程设计报告2009 ~2010 学年第二学期课程数据结构与算法课程设计名称矩阵的加法运算问题学生姓名胡九铭学号0804012039专业班级计算机科学与技术08级(2)班指导教师王昆仑张贯虹2010 年6 月一、问题分析和任务定义1、问题分析此程序需要完成如下要求:设计十字链表表示稀疏矩阵,并实现矩阵的加法运算。

并且要求能够要检查有关运算的条件,并对错误的条件产生报警。

2、(1)设计函数建立稀疏矩阵。

(2)设计函数输出稀疏矩阵的值。

(3)构造函数进行两个稀疏矩阵相加,(4)构造函数进行两个稀疏矩阵相加时是否能够符合运算要求,即检查有关运算的条件,并对错误的条件产生错误警报。

(5)登录函数,即需要口令才可以登录并使用计算器(6)退出系统3、原始数据的输入和输出格式由于该问题是关于矩阵的运算方面的内容,所以输入时是对矩阵中的非零元分别进行插入矩阵中,输入格式是:行、列、元素值,以数字的形式输入。

输出时,为了能更易于用户的观察和比较所以选用矩阵表的格式输出,这可以更加方便看出结果的正确与否,也有利于在编写程序的时候修改和改善程序的源代码。

4、算法应能实现的功能该算法应能实现:正确的用十字链表的存储结构建立数个稀疏矩阵;正确的输出用户建立的矩阵;能进行数个矩阵的相加运算;能对加法运算的运算条件进行判断并能对其产生报警提示。

5、该问题测试用例(a)两个行列分别相同的矩阵0 0 0 9 0 05 0 0 + 5 2 00 0 9 0 0 0预测结果:9 0 0= 10 2 00 0 9(b)两个行列数不相同的矩阵3 0 0 0 0 0 00 0 6 06 0 0 + 0 0 0 02 0 0 00 0 0 0 0 0 0预测结果:输出:不能进行加法运算,矩阵的行数和列数应分别相同!!!(c)两个以上的矩阵相加0 0 0 0 0 1 0 0 0 00 6 0 0 0 0 -3 0 0 05 0 3 0 0 + 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 5 02 0 0 0 01 0 0 0 00 0 0 0 00 5 0 0 0预测结果:1 0 0 5 02 3 0 0 0= 6 0 3 0 00 0 0 0 00 5 0 0 0二、数据结构的选择和概要设计1、主界面设计:为了实现对稀疏矩阵的多种算法功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户交互式使用本系统。

数据结构实验报告稀疏矩阵运算

数据结构实验报告稀疏矩阵运算

数据结构实验报告稀疏矩阵运算实验目的:1.学习并理解稀疏矩阵的概念、特点以及存储方式。

2.掌握稀疏矩阵加法、乘法运算的基本思想和算法。

3.实现稀疏矩阵加法、乘法的算法,并进行性能测试和分析。

实验原理:稀疏矩阵是指矩阵中绝大多数元素为0的矩阵。

在实际问题中,有许多矩阵具有稀疏性,例如文本矩阵、图像矩阵等。

由于存储稀疏矩阵时,对于大量的零元素进行存储是一种浪费空间的行为,因此需要采用一种特殊的存储方式。

常见的稀疏矩阵的存储方式有三元组顺序表、十字链表、行逻辑链接表等。

其中,三元组顺序表是最简单直观的一种方式,它是将非零元素按行优先的顺序存储起来,每个元素由三个参数组成:行号、列号和元素值。

此外,还需要记录稀疏矩阵的行数、列数和非零元素个数。

稀疏矩阵加法的原理是将两个稀疏矩阵按照相同的行、列顺序进行遍历,对于相同位置的元素进行相加,得到结果矩阵。

稀疏矩阵乘法的原理是将两个稀疏矩阵按照乘法的定义进行计算,即行乘以列的和。

实验步骤:1.实现稀疏矩阵的三元组顺序表存储方式,并完成稀疏矩阵的初始化、转置、打印等基本操作。

2.实现稀疏矩阵的加法运算,并进行性能测试和分析。

3.实现稀疏矩阵的乘法运算,并进行性能测试和分析。

4.编写实验报告。

实验结果:经过实验测试,稀疏矩阵的加法和乘法算法都能正确运行,并且在处理稀疏矩阵时能够有效节省存储空间。

性能测试结果表明,稀疏矩阵加法、乘法的运行时间与非零元素个数有关,当非零元素个数较少时,运算速度较快;当非零元素个数较多时,运算速度较慢。

实验分析:稀疏矩阵的运算相对于普通矩阵的运算有明显的优势,可以节省存储空间和运算时间。

在实际应用中,稀疏矩阵的存储方式和运算算法都可以进行优化。

例如,可以采用行逻辑链接表的方式存储稀疏矩阵,进一步减少存储空间的占用;可以采用并行计算的策略加快稀疏矩阵的运算速度。

总结:通过本次实验,我深入学习了稀疏矩阵的概念、特点和存储方式,掌握了稀疏矩阵加法、乘法的基本思想和算法,并通过实验实现了稀疏矩阵的加法、乘法运算。

数据结构矩阵相关操作的课程设计

数据结构矩阵相关操作的课程设计

课程设计题目矩阵乘法教学院计算机学院专业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.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

c课程设计矩阵运算

c课程设计矩阵运算

c 课程设计矩阵运算一、教学目标本节课的教学目标是让学生掌握矩阵的基本运算,包括矩阵的加法、减法、数乘以及矩阵的乘法。

通过学习,学生应能理解矩阵运算的定义和规则,并能运用这些运算解决实际问题。

此外,学生还应掌握矩阵运算的数学原理,提高逻辑思维和数学运算能力。

在情感态度价值观方面,学生应培养对数学学科的兴趣,增强自信心,培养团队合作精神。

二、教学内容本节课的教学内容主要包括矩阵的基本运算和数学原理。

首先,介绍矩阵的加法、减法、数乘和矩阵的乘法,通过举例说明这些运算的定义和规则。

然后,讲解矩阵运算的数学原理,包括线性方程组的解法、行列式的计算以及矩阵的逆矩阵。

最后,通过实际案例让学生运用矩阵运算解决实际问题,提高学生的应用能力。

三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。

首先,采用讲授法,清晰地讲解矩阵运算的定义和规则,以及数学原理。

其次,采用讨论法,让学生分组讨论矩阵运算的应用案例,培养学生的思考和表达能力。

此外,还采用案例分析法,让学生分析实际问题,运用矩阵运算解决问题。

最后,通过实验法,让学生动手实践,加深对矩阵运算的理解。

四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源。

首先,教材和相关参考书,为学生提供系统的学习资料。

其次,多媒体资料,如PPT、教学视频等,用于直观地展示矩阵运算的过程和应用案例。

此外,还将提供实验设备,如计算器、电脑等,让学生进行实际操作,提高实践能力。

通过丰富多样的教学资源,丰富学生的学习体验,提高学习效果。

五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。

评估方式包括平时表现、作业、考试等。

平时表现主要评估学生的课堂参与度、提问回答等,通过观察学生的表现来了解他们的学习状态。

作业方面,将布置适量的练习题,要求学生在规定时间内完成,通过批改作业了解学生对矩阵运算的理解和掌握程度。

考试方面,将设置期中考试和期末考试,考试内容涵盖本节课的全部知识点,通过考试来检验学生的学习成果。

矩阵运算的课程设计

矩阵运算的课程设计

矩阵运算的课程设计一、课程目标知识目标:1. 理解矩阵的定义,掌握矩阵的基本元素和结构特点;2. 学会矩阵的加、减、乘运算,并能够运用这些运算解决实际问题;3. 掌握矩阵的转置、逆矩阵的概念及其运算方法;4. 了解矩阵运算在现实生活中的应用,如线性方程组求解、图像处理等。

技能目标:1. 能够熟练运用矩阵运算公式进行计算,提高解题速度和准确性;2. 能够运用矩阵运算解决实际问题,培养分析问题和解决问题的能力;3. 能够运用矩阵软件(如MATLAB)进行矩阵运算,提高计算效率。

情感态度价值观目标:1. 培养学生对矩阵运算的兴趣,激发学习热情;2. 培养学生的团队协作精神,学会与他人共同探讨问题;3. 引导学生认识到矩阵运算在科学技术发展中的重要性,增强学生的国家使命感和社会责任感。

课程性质:本课程为高中数学选修课程,适用于对数学有一定基础的学生。

学生特点:学生具备一定的代数基础,对矩阵概念有一定了解,但对矩阵运算尚不熟悉。

教学要求:结合学生特点,注重启发式教学,通过实例分析、问题解决等方法,使学生掌握矩阵运算的基本技能,并培养其运用矩阵运算解决实际问题的能力。

在教学过程中,关注学生的情感态度价值观的培养,提高学生的学习兴趣和积极性。

最终实现课程目标的分解与达成。

二、教学内容1. 矩阵的定义与基本概念:回顾矩阵的定义,讨论矩阵的行、列、元素等基本属性。

教材章节:第二章第一节2. 矩阵的加、减运算:讲解矩阵加、减法的规则,通过例题演示运算方法。

教材章节:第二章第二节3. 矩阵的乘法运算:介绍矩阵乘法法则,分析矩阵乘法与实数乘法的异同。

教材章节:第二章第三节4. 矩阵的转置与逆矩阵:阐述转置矩阵的概念,探讨逆矩阵的定义及性质。

教材章节:第二章第四节5. 矩阵的应用:介绍矩阵在解决线性方程组、图像处理等方面的应用。

教材章节:第二章第五节6. 矩阵运算软件实践:指导学生使用MATLAB软件进行矩阵运算,提高计算效率。

数据结构课程设计(矩阵的运算)

数据结构课程设计(矩阵的运算)

数据结构课程设计报告题目:_____________________________________专业:_____________________________________班级:_____________________________________学号:_____________________________________姓名:_____________________________________指导老师:__________________________________时间:_____________________________________、课程设计题目及所涉及知识点设计题目是“矩阵的运算” ,所涉及的知识点主要是:1、数据结构中的对于结构体的定义,用typedef struct 来实现,根据所设计的问题在结构体里面定义数据类型及其变量,用define 定义数组的大小,然后利用typedef 来实现对于变量的未知类型确定正确的类型。

2、利用数组的形式来储存数据,在实现不同操作过程中,有的用一维结构体数组(三元组顺序表)来存储,有的用二维数组来储存。

3、转置的过程中利用的是快速转置的方法,附设了num 和cpot 两个辅助变量。

4、矩阵的加法、减法、乘法、逆运算的基本算法方式。

5、通过调用每个函数,来实现每个算法的功能。

、课程设计思路及算法描述设计思路:1、首先是对于转置的考虑,要运用快速转置的方法实现,必须用三元组顺序表来储存数据,所以在第一个结构体中存在int 类型的行数(mu )列数(nu )以及非零元素的个数(tu );然后第二个结构体中分别有非零元素的行下标(i)、列下标(j)和元素数值(e),最后在第一个结构体中实现对第二个结构体成为数组结构体类型。

2、对于其余加法、减法、乘法和逆运算则是运用另一个结构体来实现,里面只有矩阵的行数、列数和一个二维数组(用float 来定义类型)。

数据结构课程设计报告特殊矩阵运算

数据结构课程设计报告特殊矩阵运算

特殊矩阵运算1.1程序功能简介对特殊矩阵能够在界面上以人们熟悉的方式显示,可以对特殊矩阵进行加法运算和减法运算,矩阵转置。

按照要求使用了多种数据结构来求解问题,具体为二维数组和类似图的数据结构。

由于题目要求使用多种数据结构,因此分开写了两段程序,均实现了上述要求的功能,以下将分开说明。

先说明的是用二维数组实现的程序,后说明的是用图结构实现的程序。

1.2关于输入、输出形式及数据范围1.2.1使用二维数组实现的程序输入、输出范围为:-000到000,足以解决绝大多数的矩阵运算问题。

1.2.2输入的格式进入程序后首先展现的是功能选择界面,如下图:此时可通过输入对应功能的数字来选择功能。

在此程序中不同功能输入格式不同:选择功能1.矩阵转置时需要输入要进行转置操作的矩阵,首先输入矩阵的行数和列数,以逗号隔开,之后依次按矩阵形式输入矩阵即可,各数值之间以空格隔开。

选择功能2.矩阵数乘时需要输入要进行数乘操作的矩阵,此输入格式同上,之后输入一个实数,即要进行数乘的数即可。

功能3.矩阵加法与4.矩阵减法输入格式和5.矩阵乘法相同,按上述操作输入两个矩阵即可,需要注意的是矩阵减法默认顺序为先输入的矩阵减去后输入的矩阵。

当按照格式输入时可以实现以上功能,但输入错误数据时,例如进行行列数不同的矩阵相加减时则会返回无法操作,请重新输入的提示。

具体情况见下文测试部分。

1.3.1使用图结构实现的稀疏矩阵运算器程序输入、输出范围同上。

1.3.2输入的格式进入程序后首先展现的是功能选择界面,如下图:选择功能部分输入同上。

在进行矩阵输入时采取三元组的形式,这是由于稀疏矩阵的多零元性质。

首先输入矩阵的行数、列数、非零元个数,以空格隔开,输入完毕后确认,开始输入各个非零元。

输入非零元时按“所在行下标所在列下标值”的形式输入,需要注意的是输入时只能从所在行小的开始按顺序输入,不能先输入行数大的数据再输入行数小的数据。

2 概要设计2.1用二维数组实现的程序的概要设计由于使用二维数组结构实现上述功能较为简单,故全部运算仅由主函数执行,不单写出各个简单的函数。

数据结构课程设计 报告 (十字链表实现稀疏矩阵的加法)

数据结构课程设计 报告 (十字链表实现稀疏矩阵的加法)

一、问题描述十字链表实现稀疏矩阵的加法1、功能要求:根据用户输入的矩阵,实现稀疏矩阵的求和运算,并输出结果。

2、输入要求:矩阵的数据在程序运行的时候由用户提供,先由用户输入稀疏矩阵的行数、列数和非零元个数。

再根据非零元个数,输入这些非零元,还需要用户为这些非零元输入行、列和非零元的值。

这样,一个稀疏矩阵就输入完成。

若输入4 3 2则表示这个稀疏矩阵有4行3列2个非零元然后用户需要为这两个非零元输入行、列、非零元的值如:1 2 24 1 1表示第一个非零元行为1,列为2,,值为2;第二个非零元行为4,列为1,值为1。

此过程输入的稀疏矩阵为:0 2 00 0 00 0 01 0 03、输出要求:输出按矩阵输出,按行列依次输出,非零元则输出非零元的值,不是非零元则输出“0”。

各元素之间用空格隔开。

最后输出完整的矩阵。

二、概要设计1.稀疏矩阵的抽象数据类型定义如下:ADT SparseMatrix {数据对象: D={a ij|i=1,2,3……m,j=1,2,3……n;a ij属于ElemSet,m和n分别是稀疏矩阵的行数和列数}数据关系: R={ Row, Col }Row={<a ij,a ij+1>|1<=i<=m,1<=j<=n-1}Col={<a ij,a i+1j>|1<=i<=m-1,1<=j<=n}基本操作:CreateSMatrix(&M);//建立稀疏矩阵MDestroySMatrix(&M);//销毁稀疏矩阵M;TransposeSMatrix(M);//求稀疏矩阵的转置矩阵AddSMatrix(&M,&N);//求稀疏矩阵M和N之和MulSMatrix(&M,&N);//求稀疏矩阵M和N之积}ADT SparseMatrix2、存储结构选择采用十字链表存储稀疏矩阵,它是稀疏矩阵链式表示的一种较好的表示方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告题目:专业:班级:学号:姓名:指导老师:时间:一、课程设计题目及所涉及知识点设计题目是“矩阵的运算”;所涉及的知识点主要是: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<>float A[20][20];float B[20][20];float C[20][20];float y=;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(j=0;j<ac;j++){ printf("%",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("%",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("%",A[i][j]);if((j+1)%ac==0)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("%",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++)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("%",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("%",C[i][j]);if((j+1)%ac==0)printf("\n"); }};break;case 4:{printf("请输入你要进行运算的矩阵A的行数和列数以逗号隔开:\n"); scanf("%d,%d",&ar,&ac);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("%",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("%",B[i][j]);if((j+1)%bc==0)printf("\n");}printf("矩阵A-矩阵B等于:\n");ar=br;ac=bc;for(i=0;i<ar;i++)C[i][j]=A[i][j]-B[i][j];for(i=0;i<ar;i++)for(j=0;j<ac;j++){ printf("%",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("%",A[i][j]);if((j+1)%ac==0)printf("\n"); }printf("请输入矩阵B用空格隔开:\n");for(i=0;i<br;i++)scanf("%f",&B[i][j]);printf("输出矩阵B:\n");for(i=0;i<br;i++)for(j=0;j<bc;j++){ printf("%",B[i][j]);if((j+1)%bc==0)printf("\n"); }printf("矩阵A*矩阵B等于:\n");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];for(i=0;i<cr;i++)for(j=0;j<cc;j++){ printf("%",C[i][j]);if((j+1)%cc==0)printf("\n"); }};break;case 6: ;break;default:printf("*******************************************************\n"); }}while(x!=6);}运行的结果如下:六、指导老师评语及成绩。

相关文档
最新文档