C语言课程设计矩阵的构造与打印
《 C 语 言 》
课程设计报告
标题:矩阵的构造与打印
学号:
姓名:
同组人员:
年级专业:09电子信息工程
指导老师:
完成日期:2010/6/24
目录
一、选题思想
二、课题要求
三、课题分析与设计
四、具体分工
五、源程序代码与调试
六、流程图
七、总结
八、参考文献
九、评定意见
一、选题思想
通过对线性代数与C语言课程相关知识的学习,产生了用计算机知识方便快捷地去处理简单数据结构的想法,并进行了相关的设计构想。通过本课题的锻炼,增强对所学知识的理解及相关知识贯通的运用,提升了自我学习实践的兴趣与能力!
二、课题要求
(1)矩阵为n阶方阵,n由键盘输入;
(2) 可在螺旋方阵和蛇形方阵中选择(如下图所示)。
三、课题分析与设计
本程序的设计要充分运用所学知识函数调用,二维数组,内存的动态分配,指针等进行设计,问题的关键在于如何进行矩阵的“转向” 在螺旋矩阵设计中通过记录(计数器)控制每行的数的数目和转向,实现行列互换,“层层推进”,根据n的奇偶定出最后一位数(即n!)的具体位置,从而实现数的螺旋循环。在蛇形矩阵中通过行列坐标之和的递增规律,以对角线元素行列坐标之和为界,通过坐标和的奇偶互换行列坐标从而实现“转向”。通过判断数n与对角线元素坐标和的大小,跨过“对角线”,进行类似操作即可。
四、具体分工
在程序的设计过程中进行了明确的分工与合作,第一部分螺旋矩阵的设计由王一朝完成,第二部分蛇形矩阵的设计由王艳辉完成。
五、源程序代码与调试
1. 源程序代码
#include
#include
#include
#include
void 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 ");
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);
}
}
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,13);
cprintf(" * 2. no *\n");
gotoxy(9,14);
cprintf(" ******************************\n");
gotoxy(9,15);
cprintf(" Please Enter Your Choice<1~2>:");
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;sum
{
for