c语言矩阵构造,C语言课程设计矩阵的构造与打印.doc

这篇博客详细介绍了使用C语言进行矩阵构造与打印的课程设计,包括螺旋矩阵和蛇形矩阵的实现。作者通过函数调用、二维数组、动态内存分配和指针等技术,实现了矩阵数据的有序排列。程序设计中,两位同学分工合作,一人负责螺旋矩阵,另一人负责蛇形矩阵。博客还包含了程序代码、流程图和设计总结。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值