1、c语言课程设计矩阵的构造与打印 C 语 言 课程设计报告 标题:矩阵的构造与打印学号: 姓名: 同组人员: 年级专业:09电子信息工程指导老师: 完成日期:2010/6/24一、选题思想二、课题要求三、课题分析与设计四、具体分工五、源程序代码与调试 六、流程图七、总结八、参考文献九、评定意见一、选题思想通过对线性代数与C语言课程相关知识的学习,产生了用计算机知识方便快捷地去处理简单数据结构的想法,并进行了相关的设计构想。通过本课题的锻炼,增强对所学知识的理解及相关知识贯通的运用,提升了自我学习实践的兴趣与能力!二、课题要求(1)矩阵为n阶方阵,n由键盘输入;(2) 可在螺旋方阵和蛇形方阵中选择
2、(如下图所示)。三、课题分析与设计 本程序的设计要充分运用所学知识函数调用,二维数组,内存的动态分配,指针等进行设计,问题的关键在于如何进行矩阵的“转向” 在螺旋矩阵设计中通过记录(计数器)控制每行的数的数目和转向,实现行列互换,“层层推进”,根据n的奇偶定出最后一位数(即n!)的具体位置,从而实现数的螺旋循环。在蛇形矩阵中通过行列坐标之和的递增规律,以对角线元素行列坐标之和为界,通过坐标和的奇偶互换行列坐标从而实现“转向”。通过判断数n与对角线元素坐标和的大小,跨过“对角线”,进行类似操作即可。四、具体分工 在程序的设计过程中进行了明确的分工与合作,第一部分螺旋矩阵的设计由王一朝完成,第二部
3、分蛇形矩阵的设计由王艳辉完成。五、源程序代码与调试1. 源程序代码#include#include#include#includevoid main() int a,n,*w,p,g,j; int *wyz(int n); int wyh(int n); int menu(); j=menu(); if(j=1) exit(0); else clrscr(); printf(please choose 1 or 2:1 for spial matrix,2 for serpent matrix:); scanf(%d,&a); if(a=1) printf(please enter n );
4、scanf(%d,&n); w=wyz(n); for(p=1,g=0;g=n*n-1;g+,p+) printf(%4d,wg); if(p%n=0) printf(n);printf(n);printf(n); else wyh(n); int menu() int i; clrscr(); textcolor(85); gotoxy(9,10); cprintf( welcome to using our software n); gotoxy(9,11); cprintf( *Menu*n); gotoxy(9,12); cprintf( * 1. use *n); gotoxy(9,
5、13); cprintf( * 2. no *n); gotoxy(9,14); cprintf( *n); gotoxy(9,15); cprintf( Please Enter Your Choice:); scanf(%d,&i); return(i); int *wyz(int n) int *str,i,j,b,k,q,m,z,r,p,g,sum,max,h;clrscr(); sum=0; max=n*n; str=(int *)malloc(max+max); for(q=0,j=1,b=0,z=i=n-1,g=0;sumn*n-1;b+,q+,z=z-2) for(m=q;m=
6、i-b;m+,j+) strm+b*n=j; for(m=m-1,r=1+b;r=b;j+,m-) strr*n+m=j; for( m=m+1,r=r-1;r=b+1;j+,r-) strr*n+m=j; g=4*(z+1)-4; sum=sum+g; if(n%2!=0) strmax/2=n*n; return(str); int wyh(int n) int j,k,c,m=1,x,y; int a100100; printf(Input n: ); do scanf(%d,&n); while(n10); printf(n); for(c=0;c=(n-1)+(n-1);c+) if
7、(c=n-1) for(k=0;k=c;k+) for(j=0;j=c;j+) if(k+j=c) if(c%2=0) akj=m+; else ajk=m+; else for(k=0;k=n-1;k+) for(j=0;j=n-1;j+) if(k+j=c) if(c%2=0) akj=m+; else ajk=m+; clrscr(); for(k=0;kn;k+) for(j=0;jn;j+) printf(%4d,akj); printf(n); printf(n); printf(n); 2. 调试在运行程序后,我们就进入了选择界面。作为使用者,他可以考虑是否使用我们的程序。运行结
8、果如下:当决定你的选择后,可按上述提示键入1或2.键入以后出现下面的界面。在这个界面下,可以考虑是使用蛇形矩阵还是使用螺旋形矩阵?。当选择1(即 螺旋形矩阵)得到的结果如下这是可以选择输入的矩阵的阶数如果输入6,运行结果如下:如果在这次使用中不用螺旋形矩阵可以选择使用蛇形矩阵,运行结果如下:同样此时可以键入数字,例如5: 六、流程图XX文库 - 让每个人平等地提升自我 蛇形矩阵伪代码如下:Input the number nn取值范围:1n10m=1三重循环在c(n-1)时c=n,k=0, j循环j=0, 不满足k+j=c,passj=1, 不满足k+j=c,pass、j=n-1,满足k+j=
9、c判断c能否被2 整除,确定交不交换行列坐标akj=m+或ajk=m+k=2,j循环(同上)、k=n-1,j=0, 满足k+j=c判断c能否被2 整除,确定交不交换行列坐标akj=m+或ajk=m+c=n+1,k=0,j循环(同上)、c=2n-2,k=0,j循环(同上)k=1,2,、n-2,j循环(同上)k=n-1,j=0,1,2、n-2判断k+j=c是否成立,进行循环j=n-1,满足k+j=c,且c能被2 整除an-1n-1=m+=n!七、总结通过此次课题的设计,使我们对所学知识特别是数组、指针、函数的调用技巧等有了更加充分的认识与理解,在设计调试过程过程中,也得到了指导老师的许多有益意见与
10、指导,使自己受益匪浅。设计中充分发挥自己在不同方面的优势进行了分工合作,在相互沟通与交流的努力下成功完成了本次课程的设计工作。八、参考文献1.谭浩强,C程序设计(第三版)。北京:清华大学出版社,2005年 2.赵永哲,李雄飞,戴秀英编著,C语言程序设计,科学出版社,2003年 3.夏宽理,赵子正编著,C语言程序设计,中国铁道出版社,2006年 4.谭浩强编著,C程序设计,清华大学出版社,1991年 5.Gary J. Bronson, A First Book of ANSI C (Fourth Edition), Publishing House of Electronics Industr
11、y, 2006. 6.Al Kelley, Ira Pohl, A Book on C: Programming in C (Fourth Edition), China Machine Press, 2004. 7.Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, China Machine Press, 2006. 8.Kochan S G著。Programming in ANSI C。Hagden Books Indianapolis:Indiana,U.S.A,19949.Beitel H M,Deitel P J.C How to program.second Edition.蒋才鹏等译。C程序设计教程。北京:机械工业出版社,2000九、评定意见指导教师评语主要内容包括:设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。成绩: 签名: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1