动态矩阵的产生与管理一综述.docx
- 文档编号:643426
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:66.92KB
动态矩阵的产生与管理一综述.docx
《动态矩阵的产生与管理一综述.docx》由会员分享,可在线阅读,更多相关《动态矩阵的产生与管理一综述.docx(11页珍藏版)》请在冰豆网上搜索。
动态矩阵的产生与管理一综述
沈阳航空工业学院
课程设计
学号__200604111013__
班级__6411101__
姓名__崔献威__
指导教师__王晓岩_
2008年3月12日
沈阳航空工业学院
课程设计任务书
材料科学与工程学院金属材料工程专业6411101班学号200604111013
课程设计题目:
动态矩阵的产生与管理一
二、课程设计工作自2008年3月3日起至2008年3月7日止
三、课程设计内容:
用C语言编写软件完成以下任务:
利用链表的方法,产生任意行数和列数的矩阵,用于存储某个二维矩阵。
行数和列数由用户从键盘输入,从而体现动态性。
提示:
先用链表动态管理1行的数据,有了基础之后再设计管理二维的数据
四、课程设计要求:
程序质量:
●贯彻结构化的程序设计思想。
●用户界面友好,功能明确,操作方便。
●用户界面中的菜单至少应包括“输入矩阵的行数和列数”、“输入矩阵元素”、“打印矩阵”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
●。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
________学生签名:
________
目录
一、需求分析1
二、程序流程图1
三、核心技术的实现说明及相应程序段4
四、个人总结10
五、参考文献10
六、源程序11
一、需求分析
动态矩阵的产生有几个步骤组成,1输入动态矩阵的维数2用链表建立一个动态矩阵3输出动态矩阵
1输入动态矩阵的维数输入矩阵的行数和列数
2产生动态矩阵首先在内存开辟一个空间并且输入一个元素,判断行数和列数是否满足要求,当满足要求继续开辟内存空间,并且与前一个元素相连,直到行数和列数不满足要求
3输出动态矩阵输出矩阵的元素
二、程序流程图
1、程序总体结构图
表1
2、产生矩阵流程图
表2
3输出矩阵
表3
三、核心技术的实现说明及相应程序段
#include
#include
#include
#defineNULL0
#defineLENsizeof(structnumber)
定义结构体,用来存储一个结点数据
structnumber
{
intnum;
structnumber*next;
};
introw;
inttier;
structnumber*head;
structnumber*creat()
{
inti,n,m;
structnumber*p1,*p2,*p3;
n=0;
for(i=0;i { printf("\n第%d行",i+1); n=0; if(i==0) 在内存中开辟一段空间 p1=p2=(structnumber*)malloc(sizeof(LEN)); else p1=(structnumber*)malloc(sizeof(LEN)); printf("\n请输入数据: "); scanf("%d",&p1->num); while(n { n=n+1; if(n==1&&i==0){head=NULL;head=p1;} elsep2->next=p1; p2=p1; if(n! =tier) { p1=(structnumber*)malloc(sizeof(LEN)); printf("\n请输入数据: "); scanf("%d",&p1->num); } } } p2->next=NULL; p3=head; returnhead; } voidprint(structnumber*head) { intn; structnumber*p; p=head; if(head! =NULL) { do { printf("%d\t",p->num); p=p->next; n++; if(n%tier==0) printf("\n"); }while(p! =NULL); } } 输入函数 voidinput_row_tier() { printf("\n请输入行数: "); scanf("%d",&row); printf("\n请输入列数: "); scanf("%d",&tier); } voidmain() { intmm; while (1) { printf("\n1输入行和列"); printf("\n2录入"); printf("\n3输出"); printf("\n4退出\n\t"); scanf("%d",&mm); switch(mm) { case1: input_row_tier();break; case2: creat();break; case3: print(head);break; case4: exit(0);break; } } } 四、个人总结 在C语言中,数组的长度是固定的。 但是在有时,不知道究竟使用多少元素的时候,就必须定义足够长的数组,这样不仅浪费内存资源,而且在程序编写过程中很容易出现一些不可意料的错误。 C语言中提供的内存管理程序可以帮助我们开辟固定长度的内存空间,这样我们根据内存空间、利用链表的相关知识可以创建动态数组。 在编制程序的过程中,使我学会了链表的有关操作,掌握了动态内存管理的方法,虽然只是一个小的程序,但是我是通过自己的努力一步步完成的,使我受益很深。 。 五、参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 六、源程序 #include #include #include #defineNULL0 #defineLENsizeof(structnumber) structnumber { intnum; structnumber*next; }; introw; inttier; structnumber*head; structnumber*creat() { inti,n,m; structnumber*p1,*p2,*p3; n=0; for(i=0;i { printf("\n第%d行",i+1); n=0; if(i==0) p1=p2=(structnumber*)malloc(sizeof(LEN)); else p1=(structnumber*)malloc(sizeof(LEN)); printf("\n请输入数据: "); scanf("%d",&p1->num); while(n { n=n+1; if(n==1&&i==0){head=NULL;head=p1;} elsep2->next=p1; p2=p1; if(n! =tier) { p1=(structnumber*)malloc(sizeof(LEN)); printf("\n请输入数据: "); scanf("%d",&p1->num); } } } p2->next=NULL; p3=head; returnhead; } voidprint(structnumber*head) { intn; structnumber*p; p=head; if(head! =NULL) { do { printf("%d\t",p->num); p=p->next; n++; if(n%tier==0) printf("\n"); }while(p! =NULL); } } voidinput_row_tier() { printf("\n请输入行数: "); scanf("%d",&row); printf("\n请输入列数: "); scanf("%d",&tier); } voidmain() { intmm; while (1) { printf("\n1输入行和列"); printf("\n2录入"); printf("\n3输出"); printf("\n4退出\n\t"); scanf("%d",&mm); switch(mm) { case1: input_row_tier();break; case2: creat();break; case3: print(head);break; case4: exit(0);break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 矩阵 产生 管理 综述