螺旋数形如下:
1 2 3 4
9 10 5
8 6
7
试写出一个程序,使任意输入一个数都能出现如下输出:
4
1 2 3 4
9 10 5
8 6
7
源代码:
#include <stdio.h>
void create(int size,int a[][21],int data,int x,int y,int action)
{
if(action==0)
{
a[x][y]=data;
while(a[x+1][y]==0&&x+1!=size)
{
x=x+1;
data++;
a[x][y]=data;
}
if(a[x-1][y+1]==0)create(size,a,data+1,x-1,y+1,1);
}
if(action==1)
{
a[x][y]=data;
while(a[x-1][y+1]==0&&y>0)
{
x=x-1;
y=y+1;
data++;
a[x][y]=data;
}
if(a[x][y-1]==0)create(size,a,data+1,x,y-1,2);
}
if(action==2)
{
a[x][y]=data;
while(a[x][y-1]==0)
{
y=y-1;
data++;
a[x][y]=data;
}
if(a[x+1][y]==0)create(size,a,data+1,x+1,y,0);
}
}
int main()
{
int i,j;
int a[21][21]={0};
int size;
scanf("%d",&size);
create(size,a,1,0,0,0);
for(i=0;i<size;i++)
{
for(j=0;j<size-i;j++)printf("%4d",a[j][i]);
printf("\n");
}
return 0;
}代码截图: