还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计论文题目名称矩阵问题课程名称C语言程序课程设计学生姓名学号系、专业信息工程系、网络工程专业指导教师成娅辉2013年6月6日目录TOC\o1-2\h\z\u1前言22需求分析
22.1课程设计目的
22.2课程设计任务
22.3设计环境
22.4__语言23分析和设计
23.1模块设计2~
33.2系统流程图
33.3主要模块的流程图4~104具体代码实现11~165课程设计总结
165.1程序运行结果/预期运行结果16~
175.2课程设计体会17~18____18致谢181前言从C语言产生到现在,它已经成为最重要和最流行的编程语言之一在各种流行编程语言中,都能看到C语言的影子,如J__a的语法与C语言基本相同所以可以看出学习C语言的重要性我们在c语言课程中学习了矩阵的的运用在本次课程设计中我们需要编写一个程序存放一个5*5的矩阵,然后通过调用两个函数找到该矩阵的鞍点和最大最小值2需求分析
2.1课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础
2.2课程设计任务已知一个5×5矩阵,用函数实现
(1)找出该矩阵中的鞍点,“鞍点”指的是一个位置,该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点
(2)将矩阵中最大的元素放在中心,四个角分别放四个最小的元素(按从左到右,从上到下顺序依次从小到大存放)
2.3设计环境
(1)WINDOWS2000/2003/XP/7/Vista系统
(2)VisualC++或TC集成__环境
2.4__语言C语言3分析和设计
3.1模块设计定义一个二维数组a
[5]
[5]存放一个矩阵用for循环输入25个数据到a
[5]
[5]定义一个f函数用来查找矩阵中的鞍点,存放到a[N][M]数组中,应用flag标识变量,并用__xj存放某行中最大数组元素的列下标,若有鞍点则输出鞍点的位置和值,否则输出没有鞍点定义一个fun用来查找矩阵中的最大数和4个最小数,存放到b
[5]数组中,b
[0]存放最大值放到5*5列表的最中间,即a
[2]
[2]b
[1]存放第一小数放到左上角,b
[2]存放第二小数放到右上角,b
[3]存放第三小数放到左下角b
[4]存放第四小数,放到右下角
3.2系统流程图图
3.1系统流程图
13.3主要模块的流程图
①②③图
3.2f函数流程图1
①②③图
3.3f函数流程图2
④图
3.4fun函数流程图1
④⑤ 图
3.5fun函数流程图2
⑤⑥图
3.6fun函数流程图3
⑥⑦图
3.7fun函数流程图4
⑦图
3.8fun函数流程图54具体代码实现#includestdio.h#include__th.h#includestring.h#includestdlib.h#defineN5#defineM5voidfinta[N][M];voidfuninta
[5]
[5];void__in{intija
[5]
[5];printf请输入矩阵:\n;fori=0;i5;i++{forj=0;j5;j++{scanf%da[i][j];}}fa;//调用f函数求鞍点funa;//调用fun函数求最大最小值fori=0;i5;i++{forj=0;j5;j++{printf%5da[i][j];}printf\n;}}voidfinta[N][M]{intijk;//循环变量intflag;//标识变量,表示整个矩阵是否有鞍点int__xmin;int__xj;//存当前行中最大数组元素的列下标flag=0;fori=0;iN;i++{__x=a[i]
[0];forj=0;jM;j++//寻找第i行中的最大值的列下标if__xa[i][j]{__x=a[i][j];__xj=j;}min=__x;fork=0;kN;k++//如不是__xj列中的最小值,则标识flag=0此循环可退出ifmina[k][__xj]break;ifk==N{flag=1;//有鞍点输出鞍点位置和值printf\na[%d][%d]=%d\ni__xja[i][__xj];}}ifflag!=1printf没有鞍点\n;}voidfuninta
[5]
[5]{intijklb
[5]t__xmin;__x=a
[0]
[0];//先假定其为最大值k=0;l=0;fori=0;i5;i++{forj=0;j5;j++{ifa[i][j]__x//用ij存储最大数的列下标{__x=a[i][j];k=i;l=j;}}}b
[0]=a[k][l];//将最大数放到最中间即a
[2]
[2]a[k][l]=a
[2]
[2];a
[2]
[2]=b
[0];min=a
[0]
[0];k=l=0;fori=0;i5;i++{forj=0;j5;j++//寻找所有数中的最小数{ifmina[i][j]{min=a[i][j];k=i;l=j;}}}b
[1]=a[k][l];//将最小数放到a
[0]
[0]a[k][l]=a
[0]
[0];a
[0]
[0]=b
[1];min=a
[0]
[1];k=0;l=1;//排除a
[0]
[0]寻找第二小数fori=0;i5;i++{forj=0;j5;j++{ifi==0j==0{continue;}else{ifa[i][j]min{min=a[i][j];k=i;l=j;}}}}b
[2]=a[k][l];//将找到第二小数放到右上角即a
[0]
[4]a[k][l]=a
[0]
[4];a
[0]
[4]=b
[2];min=a
[0]
[1];k=0;l=1;fori=0;i5;i++//从a
[0]
[1]点开始寻找第三小数{forj=0;j5;j++{ifi==0j==0{continue;}elseifi==0j==4//排除a
[0]
[4]来寻找{continue;}else{ifa[i][j]min{min=a[i][j];k=i;l=j;}}}}b
[3]=a[k][l];//将第三小数放到左下角即a
[4]
[0]a[k][l]=a
[4]
[0];a
[4]
[0]=b
[3];min=a
[0]
[1];k=0;l=1;//从a
[0]
[1]开始寻找第四小的数fori=0;i5;i++{forj=0;j5;j++{ifi==0j==0{continue;}elseifi==0j==4||i==4j==0//排除已找到的最小数a
[0]
[4]与a
[4]
[0]的干扰{continue;}else{ifa[i][j]min{min=a[i][j];k=i;l=j;}}}}b
[4]=a[k][l];//将第四小的数放到右下角即位置a
[4]
[4]a[k][l]=a
[4]
[4];a
[4]
[4]=b
[4];}5课程设计总结
5.1程序运行结果图
3.
9.1录入的矩阵输入如图中的矩阵输出其鞍点其最大数为35放到矩阵最中间最小的数为11121314分别放到左上角右上角左下角和右下角图
3.
9.2程序运行结果
5.2课程设计体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程经过一个学期的学习,我对C语言有了一定的了解C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是毋庸置疑在上课之前,就经常听同学说,C语言很难学,确实,刚开始听课时觉得老师不知所云不过,发现对后续内容的预习后,前面的疑团都迎刃而解,这让我对C语言的学习更有信心并且我们学习的不仅是科学的方法,还包括用什么样的态度去对待这门课程,并且让自理论性和实践性在自身得到充分的发挥,用细心严谨的态度去认识事物,且希望通过这次的实践操作可以让我更好地学习vb程序设计____
[1]黄同成,周红波.程序设计基础教程(C语言)[M].湖南人民出版社,2011.
[2]黄同成,黄磊.程序设计实践教程(C语言)[M].湖南人民出版社,2011.
[3]谭浩强.C程序设计(第三版)[M].北京清华大学出版社,2005.致谢本课程设计报告是在的成娅辉老师悉心指导下完成的,老师严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模在设计报告的撰写及整理期间,老师给了我很大的讲解与帮助,才使得报告得以顺利的完成,在此谨向老师表示忠心的感谢和崇高的敬意同时还要感谢祝定磊陈小云等同学,他们在我迷惑的也给了我很大的支持和帮助感谢我的室友们,我一生都不会忘记最后感谢我的家人,养育之恩,无以回报我将用自己最大的努力给你们欣慰开始调用f函数求鞍点调用fun函数求最大最小数结束i=0iN__x=a[i]
[0]i=0jM__x=a[i][j]j++min=__xk=0kNbreakk++flag=1k==Ni++flag!=1输出没有鞍点i=0;__x=a
[0]
[0];k=l=0i5j=0a[i][j]__x__x=a[i][j];k=i;l=jj++i++交换a[k][l]与a
[2]
[2]j5i=0i5j=0j5mina[i][j]j++i++min=a[i][j];k=i;l=j交换a[k][l]与a
[2]
[2]i5min=a[i][j]k=il=ji=0j=0j5continuemina[i][j]i==0j==0j++i++交换a[k][l]与a
[2]
[2]i5min=a[i][j];k=i;l=ji=0j=0j5continuemina[i][j]i==0j==0j++i++交换a[k][l]与a
[2]
[2]i==0j==4continuei5min=a[i][j]k=il=ji=0j=0j5continuemina[i][j]i==0j==0j++i++交换a[k][l]与a
[2]
[2]i==0j==4continuei==0j==4continue结束。