C语言课程设计矩阵地构造与打印.docx
- 文档编号:25283549
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:16
- 大小:129.56KB
C语言课程设计矩阵地构造与打印.docx
《C语言课程设计矩阵地构造与打印.docx》由会员分享,可在线阅读,更多相关《C语言课程设计矩阵地构造与打印.docx(16页珍藏版)》请在冰豆网上搜索。
C语言课程设计矩阵地构造与打印
《C语言》
课程设计报告
标题:
矩阵的构造与打印
学号:
姓名:
同组人员:
年级专业:
09电子信息工程
指导老师:
完成日期:
2010/6/24
一、选题思想
二、课题要求
三、课题分析与设计
四、具体分工
五、源程序代码与调试
六、流程图
七、总结
八、参考文献
九、评定意见
一、选题思想
通过对线性代数与C语言课程相关知识的学习,产生了用计算机知识方便快捷地去处理简单数据结构的想法,并进行了相关的设计构想。
通过本课题的锻炼,增强对所学知识的理解及相关知识贯通的运用,提升了自我学习实践的兴趣与能力!
二、课题要求
(1)矩阵为n阶方阵,n由键盘输入;
(2)可在螺旋方阵和蛇形方阵中选择(如下图所示)。
三、课题分析与设计
本程序的设计要充分运用所学知识函数调用,二维数组,内存的动态分配,指针等进行设计,问题的关键在于如何进行矩阵的“转向”在螺旋矩阵设计中通过记录(计数器)控制每行的数的数目和转向,实现行列互换,“层层推进”,根据n的奇偶定出最后一位数(即n!
)的具体位置,从而实现数的螺旋循环。
在蛇形矩阵中通过行列坐标之和的递增规律,以对角线元素行列坐标之和为界,通过坐标和的奇偶互换行列坐标从而实现“转向”。
通过判断数n与对角线元素坐标和的大小,跨过“对角线”,进行类似操作即可。
四、具体分工
在程序的设计过程中进行了明确的分工与合作,第一部分螺旋矩阵的设计由王一朝完成,第二部分蛇形矩阵的设计由王艳辉完成。
五、源程序代码与调试
1.源程序代码
#include
#include
#include
#include
voidmain()
{
inta,n,*w,p,g,j;
int*wyz(intn);
intwyh(intn);
intmenu();
j=menu();
if(j==1)exit(0);
else
{clrscr();
printf("pleasechoose1or2:
1forspialmatrix,2forserpentmatrix:
");
scanf("%d",&a);
if(a==1)
{printf("pleaseentern");
scanf("%d",&n);
w=wyz(n);
for(p=1,g=0;g<=n*n-1;g++,p++)
{
printf("%4d",w[g]);
if(p%n==0){printf("\n");printf("\n");printf("\n");}}}
else
wyh(n);
}
}
intmenu()
{
inti;
clrscr();
textcolor(85);
gotoxy(9,10);
cprintf("welcometousingoursoftware\n");
gotoxy(9,11);
cprintf("**************Menu************\n");
gotoxy(9,12);
cprintf("*1.use*\n");
gotoxy(9,13);
cprintf("*2.no*\n");
gotoxy(9,14);
cprintf("******************************\n");
gotoxy(9,15);
cprintf("PleaseEnterYourChoice<1~2>:
");
scanf("%d",&i);
return(i);
}
int*wyz(intn)
{
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;sum { for(m=q;m<=i-b;m++,j++) str[m+b*n]=j; for(m=m-1,r=1+b;r<=n-1-b;j++,r++) str[r*n+m]=j; for(r=r-1,m=m-1;m>=b;j++,m--) str[r*n+m]=j; for(m=m+1,r=r-1;r>=b+1;j++,r--) str[r*n+m]=j; g=4*(z+1)-4; sum=sum+g; } if(n%2! =0)str[max/2]=n*n; return(str); } intwyh(intn) { intj,k,c,m=1,x,y; inta[100][100]; printf("Inputn: "); do { scanf("%d",&n); }while(n<1||n>10); printf("\n"); for(c=0;c<=(n-1)+(n-1);c++) { if(c<=n-1) for(k=0;k<=c;k++) { for(j=0;j<=c;j++) { if(k+j==c) { if(c%2==0) a[k][j]=m++; else a[j][k]=m++; } } } else for(k=0;k<=n-1;k++) { for(j=0;j<=n-1;j++) { if(k+j==c) { if(c%2==0) a[k][j]=m++; else a[j][k]=m++; } } } } clrscr(); for(k=0;k { for(j=0;j printf("%4d",a[k][j]); printf("\n"); printf("\n"); printf("\n"); } } 2.调试 在运行程序后,我们就进入了选择界面。 作为使用者,他可以考虑是否使用我们的程序。 运行结果如下: 当决定你的选择后,可按上述提示键入1或2.键入以后出现下面的界面。 在这个界面下,可以考虑是使用蛇形矩阵还是使用螺旋形矩阵? 。 当选择1(即螺旋形矩阵)得到的结果如下 这是可以选择输入的矩阵的阶数如果输入6,运行结果如下: 如果在这次使用中不用螺旋形矩阵可以选择使用蛇形矩阵,运行结果如下: 同样此时可以键入数字,例如5: 六、流程图 蛇形矩阵伪代码如下: Inputthenumbern n取值范围: 1 m=1 三重循环 在c<=(n-1)中 c=0,k=0,j=0 k+j=0+0=c c能被2整除 a[0][0]=m=1 c=1,k=0,j循环 j=0,不满足k+j=c,pass j=1,满足k+j=c c=1不能被2整除,交换数组行列坐标 a[1][0]=m++=2 c=1,k=1,j=0满足k+j=c c=1不能被2整除,交换数组行列坐标 a[0][1]=m++=3 c=2,k=0时,j循环 j=0,1时,不满足k+j=c,pass j=2,满足k+j=c c能被2整除 a[0][2]=m++=4 k=1时,j=0不满足k+j=c,pass j=1时,满足k+j=c a[1][1]=m++=5 k=2时,j=0满足k+j=c a[2][0]=m++=6 、 、 、 当c>(n-1)时 c=n,k=0,j循环 j=0,不满足k+j=c,pass j=1,不满足k+j=c,pass 、 、 、 j=n-1,满足k+j=c 判断c能否被2整除,确定交不交换行列坐标 a[k][j]=m++或a[j][k]=m++ k=2,j循环(同上) 、 、 、 k=n-1,j=0,满足k+j=c 判断c能否被2整除,确定交不交换行列坐标 a[k][j]=m++或a[j][k]=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整除 a[n-1][n-1]=m++=n! 七、总结 通过此次课题的设计,使我们对所学知识特别是数组、指针、函数的调用技巧等有了更加充分的认识与理解,在设计调试过程过程中,也得到了指导老师的许多有益意见与指导,使自己受益匪浅。 设计中充分发挥自己在不同方面的优势进行了分工合作,在相互沟通与交流的努力下成功完成了本次课程的设计工作。 八、参考文献 1.谭浩强,C程序设计(第三版)。 北京: 清华大学出版社,2005年 2.赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年 3.夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年 4.谭浩强编著,《C程序设计》,清华大学出版社,1991年 5.GaryJ.Bronson,AFirstBookofANSIC(FourthEdition),PublishingHouseofElectronicsIndustry,2006. 6.AlKelley,IraPohl,ABookonC: ProgramminginC(FourthEdition),ChinaMachinePress,2004. 7.BrianW.Kernighan,DennisM.Ritchie,TheCProgrammingLanguage,ChinaMachinePress,2006. 8.KochanSG著。 ProgramminginANSIC。 HagdenBooksIndianapolis: Indiana,U.S.A,1994 9.BeitelHM,DeitelPJ.CHowtoprogram.secondEdition.蒋才鹏等译。 C程序设计教程。 北京: 机械工业出版社,2000 九、评定意见 指导教师评语 主要内容包括: 设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。 成绩: 签名: 年 月 日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 矩阵 构造 打印