专业:09通信工程班级:2班姓名:王忠怀学号:20090210420221
所谓螺旋数组,就是指向像
1363534333231302928
这样的数组.
这是一个10阶的螺旋数组。那么如何使用c语言来实现这样的螺旋数组的输出呢?
23763626160595827
3386584838281805726
4396685969594795625
50416768868791981009993927877552423
7
42698091765322
8437071727374755221
944474849505120
10111213141516171819
分析方法如下:
一.算法分析:
以3阶为例:
1234765
转化成数组就是:
a00a01a02a10a11a12a20a21a22
看一下规律:
1.a00a01a02→2.a12a22↓3.a21a20←4.a10↑5.a11→
第1步是(→)写的,就是一个循环写完
第2步是(↓)写的,列号(2)是跟第1步的最后一个数a02的列号相同第3步是(←)写的,行号(2)是跟第2步的最后一个数a22的行号相同第4步是(↑)写的,列号(0)是跟第3步的最后一个数a20的列号相同到此一个大循环结束。
从第5步开始,就重复以上循环
二.算法设计:
对于1、2阶的矩阵,大循环1次对于3、4阶的矩阵,大循环2次……
所以n、n+1阶矩阵,大循环的次数应该是(n+1)/2也可以这样理解:
第1个子循环:就像普通的循环就可以了
第2个子循环:记下最后的列号,行号依次加1第3个子循环,记下最后的行号,列号依次减1第4个子循环,记下最的的列号,行号依次减1
三.程序实现
程序代码为:
#include //宏定义,定义螺旋矩阵的阶数,要想改变数组的阶数,只需在改变N的值即可 #defineNmain(){ intn,i,j,m=1; inta[N][N]={0};//定义螺旋数组,并初始化//螺旋数组的实现 for(n=0;n<=N/2;n++){ for(j=n;j for(i=n+1;i } } //输出螺旋数组for(i=0;i } a[N-n-1][j]=m++;for(i=N-n-2;i>n;i--) a[i][n]=m++; 运行的结果为: 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务