数据结构课程设计报告n维矩阵乘法数据结构课程设计报告设计题目:n维矩阵乘法:AB-1专业计算机科学与技术班级计本学生学号指导教师起止时间2023.X.3-2023.X.11学年第I学期一、具体任务功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。分步实施:1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:建立一个文件,可完成2维矩阵的情况;3.进一步要求:通过键盘输入维数n。有兴趣的同学可以自己扩充系统功能。要求:1.界面友好,函数功能要划分好2.总体设计应画一流程图3.程序要加必要的注释4.要提供程序测试方案5.据存在那么提示用户先输入相关数据。当要对矩阵进行求逆时,先利用矩阵可逆的充要条件:|A|!=0判断矩阵是否可逆,假设矩阵的行列式|A|==0那么提示该矩阵为不可逆的;假设|A|!=0那么求其逆矩阵,并在终端显示其逆矩阵。四、算法设计思想及流程图1.抽象数据类型ADTMatrixMulti{数据对象:D={a(I,j)|i=1,2,3,…,n;j=1,2,…,n;a(i,j)∈ElemSet,n示矩阵Rsystem(“pause〞);假设B不可逆,那么返回主菜单case6:从指定文件中读入矩阵数据case0:exit(0);结果否五、源代码#include#include#include#include#include#include#defineYES1#defineNO0typedeffloatElemType;ElemTypexxA;//矩阵AElemTypexxB;//矩阵BElemTypexxR;//矩阵R,用于存放运算结果ElemTypexxV;//矩阵V,存放逆矩阵intn=0;//矩阵维数intflag=-1;//标记voidswap(ElemTypexa,ElemTypexb)//交换记录a,b的值{ElemTypec;c=xa;xa=xb;xb=c;}ElemTypexxCreateMatrix(intn)//创立n维矩阵,返回该矩阵{inti,j;ElemTypexxM;M=(ElemTypexx)malloc(sizeof(ElemTypex)xn);if(M==NULL)exit(1);for(i=0;id){d=fabs(V[i][j]);//d记录绝对值最大的元素的值/x把绝对值最大的元素在数组中的行、列坐标分别存入IS[K],JS[K]x/IS[k]=i;JS[k]=j;}}}if(d+1.0==1.0)return0;//所有元素都为0if(IS[k]!=k)/x假设绝对值最大的元素不在第k行,那么将矩阵IS[K]行的元素与k行的元素相交换x/for(j=0;j=0;k--)/x根据上面记录的行IS[k],列JS[k]信息恢复元素x/{for(j=0;j'6');return(c-'0');}voidReadFromFile()//从指定文件读入矩阵的维数及矩阵各元素的值{inti,j;FILExfp;if((fp=fopen(“tx.txt“,“r“))==NULL){puts(“无法翻开文件!!!“);system(“pause“);exit(0);}fscanf(fp,“%d“,&n);//读入矩阵维数A=CreateMatrix(n);/...