




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计100 例之( 27):回旋方阵例 27回旋方阵问题描述编写程序,生成从内到外是连续的自然数排列的回旋方阵。例如,当 n=3 和 n=4 时的回旋方阵如下图 1 所示。N=3N = 476576516814814159239231410111213图 1由内到外回旋方阵输入格式一个正整数n (1 n 20)。输出格式N 阶满足要求的由内到外回旋方阵。输出时共n 行,每行n 个数,每个数占4 列。输入样例5输出样例21201918172276516238141524923142510111213(1)编程思路 1。观察图1 及样例,由内到外回旋方阵的构造方法是:先将1 填入方阵的
2、中心位置(即i=(n-1)/2;j=(n-1)/2;aij=1 ),然后其余数的填写可以看成由向下填充(列号不变、行号加 1,即 i+)、向右填充(行号不变、列号加1,即 j+)、向上填充(行号减1、列号不变,即 i- )和向左填充(行号不变、列号减1,即 j- )四个子过程不断交替完成的。例如,图 1 所示的 4 阶由内到外回旋方阵可以看成由向下填充(2 )、向右填充( 3)、向上填充( 4、 5)、向左填充( 6、 7)、向下填充( 8、 9、 10)、向右填充(11、 12、 13)、向上填充( 14、15、 16)这 7 个子过程完成的。n 阶由内到外回旋方阵可以看成由4 个子过程交替
3、进行来完成的,这 4 个子过d123或 4,1 表示向下填充, 2 表示向右填充, 3 表示向上填充, 4 表示向左填充。每个子过程结束后,切换填充方向,方式为: d+,若 d4, d=1。在这一序列子过程中,第1、 2 子过程填写 1 个数,第 3、 4 子过程填写 2 个数,第5、6 子过程填写 3 个数,第 7、 8 子过程填写 4 个数, ,直到最后一个数n2填写完毕。(2)源程序 1。#includeint main()int a2020=0,i,j,k=1,n,x,d,cnt;scanf(%d,&n);i=(n-1)/2;j=(n-1)/2;aij=k+;d=1;cnt=1
4、;x=0;while (k=n*n)switch (d)case 1:i+;aij=k+;x+;if (x=cnt)d=2,x=0;break;case 2:j+;aij=k+;x+;if (x=cnt)d=3,x=0,cnt+;break;case 3:i-;aij=k+;x+;if (x=cnt)d=4,x=0;break;case 4:j-;aij=k+;x+;if (x=cnt)d=1,x=0,cnt+;break;for (i=0;in;i+)for (j=0;j=x1)/向上填充arowcol=num;row- ;/行号减1、列号不变,向上填充num- ;一次向上填充结束后,x1
5、加 1(即 x1+),这样向上填充的上边界增大了,下次就会少填一行。同时修改row 和 col,即 row- 、 col-,从而得到向左填充的起点。由于奇数阶方阵先向上填充,这样当向左填充时, 最底行的左下角已经填有数字,因此,向左填充的边界的初始值应为1(即 y1=1)。同理,偶数阶方阵的初始向右填充的边界y2=n-1。(4)源程序 2。#includeint main()int row,col,a2020=0,n,num;int x1,x2,y1,y2,s;/x1:填充上边界x2 :填充下边界/y1:填充左边界y2 :填充右边界s:数组元素升降标记,s 等于 l 为升, s 等于 -1 为
6、降scanf(%d,&n);num=n*n;x1=0;y1=0; x2=n; y2=n;if (n%2=0) row=0;col=n-1;y2=n-1; s=1;else row=n-1; col=0;y1=1; s=-1;while (num=1)if(s=1)while (row=y1)/ 向左填充 arowcol=num-;col-; col+;row-;/ 得到向上填充的起点y1+;/ 向左填充的左边界增大s=-1;/ 切换升降标志elsewhile(row=x1)/向上填充 arowcol=num-;row-; row+;col+;/得到向右填充的起点x1+;/向上填充的上边
7、界增大while (coly2)/向右填充arowcol=num-;col+;col-;row+;/ 得到向下填充的起点y2-;/向右填充的右边界缩小s=1;/切换升降标志for (int i=0;in;i+)for (int j=0;jn;j+)printf(%4d,aij);printf(n);return 0;习题 2727-1由外向内回旋方阵问题描述编写程序,生成从外到内是连续的自然数排列的回旋方阵。例如,当n=3 和 n=4 时的回旋方阵如下图2 所示。N=31871296234534图 2由外向内回旋方阵输入格式一个正整数n (1 n 20)。输出格式N 阶满足要求的由外向内回旋方
8、阵。输出时共n 行,每行n 个数,每个数占4 列。输入样例5输出样例11615141321724231231825221141920211056789( 1)编程思路。由外向内回旋方阵可以通过对方阵的每一圈的各边的各个元素顺序赋值来完成。每一圈的赋值又依次包含4 个顺序的过程。1)一圈的左列从上至下递增赋值,一直赋值到超过最底行(即row=n )或下一位置已经赋值了(即arow+1col ! =0)。while(row+1n & !arow+1col)a+rowcol=+num;/列号 col 不变,行号2)一圈的下行从左至右递增赋值,一直赋值到超过最右列(即经赋值了(即arowcol
9、+1 ! =0)。row递增,数 num 递增col=n)或下一位置已while(col+1=0&!arow-1col)a-rowcol=+num;/行号 row 递减,列号4)一圈的上行从右至左递增赋值,一直赋值到超过最左列(即经赋值了(即arowcol-1 ! =0)。col不变,数 num 递增col=-1)或下一位置已while(col-1=0&!arowcol-1)arow-col=+num;/行号 row不变,列号col递减,数num递增初始时, row=0 、 col=0、 num=1。( 2)源程序。#includeint main()int a2020=0;i
10、nt n,row,col,num=0;scanf(%d,&n);num=arow=0col=0=1;while(numn*n)/第 0 行第 0 列输入起始/数组中的数不超过n*n1while(row+1n & !arow+1col)/向下填充a+rowcol=+num;while(col+1=0&!arow-1col)/向上填充a-rowcol=+num;while(col-1=0&!arowcol-1)/向左填充arow-col=+num;for (int i=0;in;i+)for (int j=0;jn;j+)printf(%4d,aij);printf
11、(n);return 0;27-2间断折叠方阵问题描述n 阶间断折叠方阵是把从起始数1 开始的 n2个整数折叠为n 行 n 列的 n 阶方阵:起始数1置于方阵的左上角,然后从起始数开始递增,每一层从第1 行开始,先竖向下再折转向左,层层折叠地排列为间断折叠方阵。例如,当 n=4 和 n=5 时的间断折叠方阵如下图3 所示。图 3间断折叠方阵输入格式一个正整数n (1 n 20)。输出格式N 阶满足要求的间断折叠方阵。输出时共n 行,每行n 个数,每个数占4 列。输入样例5输出样例12510 1743611 1898712 1916151413 2025242322 21( 1)编程思路。定义一
12、个二维数组a 保存方阵的各元素,从给定的起始数1 开始,按递增 1 取值,根据间断折叠方阵的构造特点给二维数组ann 赋值。起始数 1 赋值给 a00 。除 a00 外, n 阶方阵还有叠折的n-1 层:第 i 层( i=1、2、 、 n-1)的起始位置为( 0,i),随后列号 col 不变行号 row 递增(即向下填写),至 row=i 时折转;转折后,行号 row 不变列号 col 递减(即向左填写) ,至 col=0时该层结束,在每一位置分别按递增值赋值给arowcol 。具体过程描述为:a00=1;num=2;for(i=1;im;i+)/方阵共m 层row=0;col=i;/确定每层
13、起始位置arowcol= num+;while(row0)a+rowcol=num+;arow-col=num+;/先向下填/再向左填( 2)源程序。#includeint main()int i,m,num,row,col,a2020;scanf(%d,&m);a00=1;num=2;for (i=1;im;i+)/方阵共m 层row=0;col=i;arowcol=num+;while(row0)arow-col=num+;for (i=0;im;i+)for (int j=0;jm;j+)printf(%4d,aij);printf(n);return 0;27-3 回转折叠方阵
14、问题描述n 阶回转折叠方阵是把起始数1 置于方阵的左上角,然后从起始数开始递增,偶数层从第1行开始,先竖向下再折转向左;奇数层从第1 列开始,先横向右再竖向上,呈首尾连接,层层折叠地排列为回转折叠方阵。例如,当n=4 和 n=5 时的回转折叠方阵如下图4 所示。图 4回转折叠方阵输入格式一个正整数n (1 n 20)。输出格式N 阶满足要求的回转折叠方阵。输出时共n 行,每行n 个数,每个数占4 列。输入样例5输出样例129 10 25438 11 24567 12 23161514 13 22171819 20 21( 1)编程思路。回转折叠方阵构造过程的奇数层(注意: 由于数组下标从0 开始,因此程序中层号也从0 开始)与间断折叠构造过程相同,偶数层构造方法改变为:该层的起始位置为(后行号 row 不变列号col 递增(即向右填写) ,至 col=i 时折转;转折后,列号row 递减(即向上填写) ,至 row=0 时该层结束,在每一位置分别按递增值赋值给i,0),随col 不变行号arowcol 。if (i%2=0)row=i;col=0;/确定偶数层的起始位置arowcol=num+;while(col0) a-rowcol=num+;/先向右填/再向上填( 2)源程序。#includeint main()int i,m,num,row,col,a202
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中历史第2单元工业文明的崛起和对中国的冲击第7课新航路的开辟练习岳麓版必修2
- 2024-2025学年高中物理第二章恒定电流第8节多用电表的原理课时训练含解析新人教版选修3-1
- 2024年高中语文第四单元第14课一名物理学家的教育历程课时优案1含解析新人教版必修3
- 2024-2025学年高中物理第四章第5节电磁感应现象的两类情况课后达标能力提升练习含解析新人教版选修3-2
- 电平坑扒炉行业市场发展及发展趋势与投资战略研究报告
- 广东瓷砖项目申请报告范文模板
- 2025年中国茶叶批发行业发展趋势预测及投资战略研究报告
- 2025年中国振动球磨机行业市场供需格局及投资规划建议报告
- 豆乳项目可行性研究报告
- 公路勘察设计行业市场全景监测及投资战略咨询报告
- 4.1比的意义 导学案 2022-2023学年六年级数学上册-人教版(含答案)
- 部编人教版九年级下册初中历史全册同步练习(作业设计)
- 孔子仁学思想
- 六年级下册综合实践活动教案(II)
- 高中英语常用词汇表(动词、名词、形容词和副词)
- 下肢深静脉血栓形成静脉置管溶栓术后-用药及出血观察护理-PPT
- 16万吨_年液化气综合利用装置废酸环保综合利用项目环境报告书
- T∕CAEPI 43-2022 电絮凝法污水处理技术规程
- 农村商业银行合规风险管理暂行办法
- 油管、套管等规格对照表
- IEST-RP-CC0053
评论
0/150
提交评论