数据结构,旋转数字方阵,课程设计报告_第1页
数据结构,旋转数字方阵,课程设计报告_第2页
数据结构,旋转数字方阵,课程设计报告_第3页
数据结构,旋转数字方阵,课程设计报告_第4页
数据结构,旋转数字方阵,课程设计报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计题目: 数字旋转方阵一、问题描述设计一个能正确输出 N X N (1<=N<=10 )数字旋转方阵(如图 1.1)1161514132172423123182522114192021105&73911&151413212A311410567Sg图1.15阶旋转方阵图1.2逐层填数,从最外层填起二、基本要求(1) 设计数据结构存储;(2) 设计算法完成任意 N (1<=N<=10 )阶数字旋转方阵;(3) 分析时间复杂度和空间复杂度;三、概要设计1. 数据结构的设计因为数字旋转方阵也是一个平面程序采取二维数组的存储结构进行数字旋转方阵的存储,图,采

2、用二维数组的存储结构能更直观反映方阵。2. 算法的设计每一层的数字分作四个小组,每一组的数字个数为 N-1 ,通过设立一个标志来判断转换方向(如图1.2) O算法结束的标志有两种情况:一是N为1,则填入数字,结束;二是 N=0,直接结束。以上两种分别对应奇数阶数字方阵和偶数阶数字方阵。3. 时间复杂度和空间复杂度数字旋转方阵是每进行一步填入一个数,所以时间复杂度为0(n*n);二维数组所占用的空间是在声明时所分配固定的,所以的空间复杂度为0(100)1.2.四、详细设计算法伪代码:声明二维数组a1010,size为需建立的 方阵阶数,初始化i, j,num为1 若size=0,则循环结束; 若

3、 size=1,则使 aij=num , 束;3.填写区域A, aij=num ;4.填写区域B,循环结重复操作size-1 i+ ; num+ ;重复操作size-15.6.7.aij=num ; j+ ; num+ ;填写区域C,重复操作size-1aij=num ; i- ; num+ ;填写区域D,重复操作size-1 aij=num ; j- ; num+ ; i+ ; j+ ; size=size-2;返回第 1 步;循环结束后,输出数组a;这是填写逆时针数字方阵的算法,填写顺时针方阵只需把顺序 ABCD改为BADC即可为了方便程序的使用,为其增加了一个菜程序详细的流程图如右图所示

4、:单,使用的是switch-case作为选择结构,while 作循环判断五、1.运行与调试 菜单界面打欢迎便販字施转方阵糸统*厂蘇紫醪字施转方阵 墙选择.八如右图所示:2.测试数据和结果)3时针数字旋转方阵:123451&17131961&24252071423亞21d131211105阶的数字旋转方阵:顺时针数字旅转方阵;1161514132172231231825114 1? 20 21 1056789六、总结和心得在老师的教导和书本的指引下,编写代码。在填写方阵部分,因为掌握其核心要领,一步步进行思考、了解程序的运行方法,size不等于1或0的情况下填数的次数必然大于一,

5、所以选用do-while这种先执行后判断的判断语句。通过自己的思考和努力编写出这个小程序, 使我对数据结构的运用有更好的认识,掌握不同的结构,灵活运用。七、程序代码#in elude <iostream> using n ames pace std;逆时针数字旋转方阵实现void NFan gZhe n(i nt n)int size=n;int flag=0;设置转换方向标志int a1010;/ 设置二维数组int i=0,j=0,num=1;while(1)if(size=0)break;else if(size=1)aij=num; break;elsedoaij=num;

6、 i+;nu m+; flag+;while(flag<size-1); flag=0; doaij=num; j+;nu m+; flag+;while(flag<size-1); flag=0; doaij=num;i-; nu m+; flag+;while(flag<size-1); flag=0; do/区域/区域/区域区域aij=num; j-; nu m+; flag+;while(flag<size-1); flag=0;/内圈循环i+;j+;size=size-2;for(i=0;i< n; i+)for(j=0;j< n;j+)cout.

7、width(4);cout<<aij<<''cout<<e ndl;cout<<e ndl;顺时针数字旋转方阵实现void SFan gZhe n(i nt n)int size=n;int flag=0;设置转换方向标志int a1010;/ 设置二维数组int i=0,j=0,num=1;while(1)if(size=0) break;else if(size=1)aij=num; break;elsedo区域aij=num; j+; nu m+; flag+;while(flag<size-1); flag=0;do

8、 aij=num; i+;/区域nu m+; flag+;while(flag<size-1); flag=0;doaij=num; j-;nu m+; flag+;while(flag<size-1); flag=0;do/区域/区域aij=num;i-;nu m+; flag+;while(flag<size-1); flag=0;II内圈循环i+;j+;size=size-2;for(i=0;i< n;i+)for(j=0;j< n;j+)cout.width(4);cout<<aij<<'' cout<<

9、e ndl;cout<<e ndl; int mai n()int n;int choice;int con itue=1;cout<<"*欢迎使用数字旋转方阵系统*"<<endl;cout<<e ndl;while(c on itue=1)cout<<"1-建立N阶数字旋转方阵"<<endl;cout<<"0-退出系统"<<endl;cout<<"请选择:"cin> >choice;switch(choice)case 0:con itue=O;break;case 1:H.cout<<"请输入数字旋转方阵的阶数:cin>>n;cout<<e ndl;cout<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论