回型数组
如何输出回型数组
/*写一个函数,在函数里把矩阵最外面的一层存到数组里,然后递归调用此函数,一层层的实现。
入口参数是数组的x,y下标,n的值和下一个要存进数组的数。
在这个函数里进行递归调用,每次传入的n值减2,当要存入的数超过n的平方,递归结束。*/
#include <stdio.h>
int a[10][10];
int sum;
void layer(int x,int y,int n,int startnum)
{
int i;
a[x][y] = startnum++;
if(startnum >= sum)
{
return;
}
for(i=0;i<n-1;i++)
{
y++;
a[x][y] = startnum++;
}
for(i=0;i<n-1;i++)
{
x++;
a[x][y] = startnum++;
}
for(i=0;i<n-1;i++)
{
y--;
a[x][y] = startnum++;
}
for(i=0;i<n-2;i++)
{
x--;
a[x][y] = startnum++;
}
if(n%2 == 0)
{
if(startnum >= sum)
{
return;
}
}
y++;
layer(x,y,n-2,startnum);
}
void main()
{
int x=0;
int y=0;
int n;
int i,j;
printf("please input the value of n:\n");
scanf("%d",&n);
getchar();
sum = n*n;
layer(x,y,n,1);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
getchar();
}
举报