c语言课程设计矩阵的构造与打印Word格式.docx
- 文档编号:22098903
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:280.99KB
c语言课程设计矩阵的构造与打印Word格式.docx
《c语言课程设计矩阵的构造与打印Word格式.docx》由会员分享,可在线阅读,更多相关《c语言课程设计矩阵的构造与打印Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
(2)可在螺旋方阵和蛇形方阵中选择(如下图所示)。
本程序的设计要充分运用所学知识函数调用,二维数组,内存的动态分配,指针等进行设计,问题的关键在于如何进行矩阵的“转向”在螺旋矩阵设计中通过记录(计数器)控制每行的数的数目和转向,实现行列互换,“层层推进”,根据n的奇偶定出最后一位数(即n!
)的具体位置,从而实现数的螺旋循环。
在蛇形矩阵中通过行列坐标之和的递增规律,以对角线元素行列坐标之和为界,通过坐标和的奇偶互换行列坐标从而实现“转向”。
通过判断数n与对角线元素坐标和的大小,跨过“对角线”,进行类似操作即可。
在程序的设计过程中进行了明确的分工与合作,第一部分螺旋矩阵的设计由王一朝完成,第二部分蛇形矩阵的设计由王艳辉完成。
1.源程序代码
#include<
stdio.h>
malloc.h>
string.h>
stdlib.h>
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"
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("
}}}
wyh(n);
}
}
intmenu()
inti;
clrscr();
textcolor(85);
gotoxy(9,10);
cprintf("
welcometousingoursoftware\n"
gotoxy(9,11);
**************Menu************\n"
gotoxy(9,12);
*1.use*\n"
gotoxy(9,13);
*2.no*\n"
gotoxy(9,14);
******************************\n"
gotoxy(9,15);
PleaseEnterYourChoice<
1~2>
:
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<
n*n-1;
b++,q++,z=z-2)
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];
Inputn:
"
do
{
scanf("
}while(n<
1||n>
10);
for(c=0;
c<
=(n-1)+(n-1);
c++)
if(c<
=n-1)
for(k=0;
k<
=c;
k++)
{
for(j=0;
j<
j++)
{
if(k+j==c)
{
if(c%2==0)
a[k][j]=m++;
else
a[j][k]=m++;
}
}
}
else
for(k=0;
=n-1;
for(j=0;
{
if(k+j==c)
if(c%2==0)
a[k][j]=m++;
else
a[j][k]=m++;
}
}
for(k=0;
n;
for(j=0;
a[k][j]);
2.调试
在运行程序后,我们就进入了选择界面。
作为使用者,他可以考虑是否使用我们的程序。
运行结果如下:
当决定你的选择后,可按上述提示键入1或2.键入以后出现下面的界面。
在这个界面下,可以考虑是使用蛇形矩阵还是使用螺旋形矩阵?
。
当选择1(即螺旋形矩阵)得到的结果如下
这是可以选择输入的矩阵的阶数如果输入6,运行结果如下:
如果在这次使用中不用螺旋形矩阵可以选择使用蛇形矩阵,运行结果如下:
同样此时可以键入数字,例如5:
六、流程图
XX文库-让每个人平等地提升自我
蛇形矩阵伪代码如下:
Inputthenumbern
n取值范围:
1<
n<
10
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
a[0][1]=m++=3
c=2,k=0时,j循环
j=0,1时,不满足k+j=c,pass
j=2,满足k+j=c
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=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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 矩阵 构造 打印