c语言数组输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:36:14
要如何输出一个螺旋数组 比如
1 2 3 4 5 6 7
18 19 20 21 22 23 8
17 28 27 26 25 24 9
16 15 14 13 12 11 10
说详细点 怎么弄

我写的这个是N×N的,允许用户自己输入N,有较好的通用性。如果行和列是不相同的,你自己也可以改一改。不懂再问
#include<stdio.h>
void main()
{
int m=2,n;
int a[10][10]={1};
int dir=0;
int i=0,j=0;
printf("Please input N:");
scanf("%d", &n);
while(m<=n*n)
{
switch(dir)
{
case 0:/*先向下输出*/
while(i<n-1 && a[i+1][j]==0) a[++i][j]=m++;

break;
case 1:/*再向右*/
while(j<n-1 && a[i][j+1]==0) a[i][++j]=m++;

break;
case 2:/*向上*/
while(i>0 && a[i-1][j]==0) a[--i][j]=m++;

break;
case 3:/*向左*/
while(j>0 && a[i][j-1]==0) a[i][--j]=m++;

break;
default:break;
}
dir=(dir+1)%4;
}
for(i=0;i<n;i++) <