您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页C语言的螺旋数组

C语言的螺旋数组

来源:意榕旅游网
螺旋数组

专业: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;ja[n][j]=m++;

for(i=n+1;ia[i][N-n-1]=m++;for(j=N-n-2;j>=n;j--)

}

}

//输出螺旋数组for(i=0;ifor(j=0;jprintf(\"%4d\printf(\"\\n\");

}

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务