c语言编程 输入螺旋数组,[原创]我写的螺旋数组算法

[原创]我写的螺旋数组算法

图片附件: 游客没有浏览图片的权限,请 登录 或 注册

/*螺旋数组*/

#include

#include

#define N 100

int ls[N][N];

void lssz()

{

int sum=N*N,i=0,j=0,cs=0;

while(cs

{

while(j<=N-1)

{

if (!ls[i][j])

{

ls[i][j++]=++cs;

}

else

{

j--;

break;

}

}

if (j==N)

j--;

i++;

/*从左到右*/

while(i<=N-1)

{

if (!ls[i][j])

{

ls[i++][j]=++cs;

}

else

{

i--;

break;

}

}

if (i==N)

i--;

j--;

/*从上到下*/

while(j>=0)

{

if (!ls[i][j])

{

ls[i][j--]=++cs;

}

else

{

j++;

break;

}

}

if (j<0)

j++;

i--;

/*从右到左*/

while(i>=0)

{

if (!ls[i][j])

{

ls[i--][j]=++cs;

}

else

{

i++;

break;

}

}

if (i<0)

i++;

j++;

/*从下到上*/

}

}

void main()

{

int i=0,j;

clrscr();

lssz();

for(;i

{

for(j=0;j

printf("%-5d",ls[i][j]);

puts("");

}

getch();

}

写这个想了很久的算法,这不算难

调试程序时才把我整晕了

我写错一个字母

结果不同,

我就用N=5这个矩阵自己在草稿本上测试程序

后面才找到

调试好麻烦

while(j>=0)

{

if (!ls[i][j])

{

ls[i][j--]=++cs;

}

else

{

j++; /*这儿开先我写成i++了,结果中间的往上跑了*/

break;

}

}

if (j<0)

j++;

i--;

/*从右到左*/

13a2f4bd84d8af35e7645442bb7a26a3.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值