}
4.4矩阵的转置
该函数实现的是矩阵A或矩阵B的转置操作,通过对矩阵的行和列进行调换,利用for()循环语句实现对矩阵A或矩阵B的转置,其代码如下:
voidTranspose(MatrixM)//矩阵转置
{
C.H=M.L;
C.L=M.H;
cout<<"原来的";
Display(M);
for(inti=1;i<=M.L;i++)
for(intj=1;j<=M.H;j++)
{
C.zhi[i][j]=M.zhi[j][i];
}
cout<<"转置后的";
Display(C);
}
4.5矩阵的加法运算
实现两个矩阵之间的加法运算,即A+B,其代码如下:
voidAdd(MatrixM,MatrixN)//A+B
{
intn1=Max(M.H,N.H);
intn2=Max(M.L,N.L);
C.H=n1;
C.L=n2;
C=Zero(C);
for(inti=1;i<=n1;i++)
for(intj=1;j<=n2;j++)
{
C.zhi[i][j]=M.zhi[i][j]+N.zhi[i][j];
}
cout<<"A+B的运算结果";
Display(C);
}
4.6矩阵的减法运算
实现两个矩阵之间的减法运算,即A-B,其代码如下:
voidSub(MatrixM,MatrixN)//A-B
{
intn1=Max(M.H,N.H);
intn2=Max(M.L,N.L);
C.H=n1;
C.L=n2;
C=Zero(C);
for(inti=1;i<=n1;i++)
for(intj=1;j<=n2;j++)
{
C.zhi[i][j]=M.zhi[i][j]-N.zhi[i][j];
}
cout<<"A-B的运算结果";
Display(C);
}
4.7矩阵的乘法运算
实现两个矩阵之间的乘法运算,即A*B,如果矩阵A的列数和矩阵B的行数不相同,则无法进行乘法运算,系统会提示错误,其代码如下:
voidMulti(MatrixM,MatrixN)//A*B
{
if(M.L!
=N.H)
{
cout<<"矩阵A的列数和矩阵B的行数不相同,无法进行乘法运算!
\n";
}
else
if(M.L==N.H)
{
C.H=M.H;
C.L=N.L;
C=Zero(C);
for(inti=1;i<=Maxsize;i++)
for(intj=1;j<=Maxsize;j++)
for(intk=1;k<=Maxsize;k++)
{
C.zhi[i][j]+=M.zhi[i][k]*N.zhi[k][j];
}
cout<<"运算结果";
Display(C);
}
}
5程序运行
5.1输入矩阵
运行该运算系统,进入“菜单”选项以后,输入“1”,选择“输入矩阵A”,运算结果如图3所示;输入“2”,选择“输入矩阵B”,运算结果如图4所示:
图3输入矩阵A图4输入矩阵B
5.2矩阵转置
输入矩阵A和矩阵B以后,在“菜单”提示下,输入“3”,进行矩阵A的转置,运算结果如图5所示;输入“4”,进行矩阵B的转置,运算结果如图6所示:
图5矩阵A的转置图6矩阵B的转置
5.3矩阵加法
在“菜单”提示下,输入“5”,进行两个矩阵的加法运算,即A+B,运算结果如图7所示:
图7矩阵加法
5.4矩阵减法
在“菜单”提示下,输入“6”,进行两个矩阵的加法运算,即A-B,运算结果如图8所示:
图8矩阵减法
5.5矩阵乘法
在“菜单”提示下,输入“7”,进行两个矩阵的第一种乘法运算,即A*B,运算结果如图9所示;输入“8”,进行两个矩阵的第二种乘法运算,即B*A,运算结果如图10所示:
图9矩阵乘法1(A*B)图10矩阵乘法2(B*A)
5.6退出及错误提示
算法在运行时还有退出及错误提示功能,在“菜单”提示下,输入“0”则退出系统,如图11所示;若输入0-8以外的数字,则会出现错误提示,如图12所示:
图11退出图12错误提示
6总结
通过对数据结构这门课的学习,我了解到:
“数据结构”在计算机科学中是一门综合性的专业基础课。
而我们现在所学的数据结构是C语言版的,是建立在C语言基础之上的,若是C语言基础知识不牢固,要想学好数据结构这门课程是有一定的困难的。
所以在学习数据结构这门课程的时候,也顺便复习了C语言的相关内容,加深了我对C语言的理解和应用,并且也深深体会到了数据结构这门课程的重要性。
在本次课程设计过程中,我体会到自己所学的东西太少了,很多都不知道,也遇到了不少实际问题,使我发现了在学习过程中的不足。
这次课程设计,我本来打算做的是MFC可视化的人机友好界面,但是由于在程序设计以及运行时出现了太多目前无法解决的问题,只好退而求其次,应用了DOS界面来完成本次课程设计。
在代码设计时,也出现了一些基本的C语言语法错误,如函数的嵌套定义等,在老师和同学的帮助下都一一解决了,这也反映了我C语言基础知识的不扎实,以后应在学习过程中加强这方面的学习。
通过本次课程设计,我对数据结构这门课有了进一步的理解。
数据结构这门课最主要的内容在于算法思想,而程序编写次之。
在编写程序时,如果算法思想
是正确的,那么这个程序就已经成功了一多半。
算法思想在数据结构中占有重要地位,如果说C语言是数据结构这座程序大厦的根基的话,那么算法思想就是构成大厦的一砖一瓦,再好的根基离了砖瓦也构不成大厦。
所以,要想学好数据结构这门课程,平时不只要加强程序的编写,更要多思考算法思想,加强对算法思想的锻炼和理解。
本次课程设计得到了老师和很多同学的帮助,在此一并表示感谢。
参考文献
[1]秦锋.数据结构(C语言版).北京:
清华大学出版社,2011
[2]温秀梅,丁学均.VisualC++面向对象程序设计.北京:
清华大学出版社,2009
[3]何钦铭,颜晖.C语言程序设计.北京:
高等教育出版社,2008
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。