- 使用1,2,3…的自然数列,从左上角开始,按照顺时针方向螺旋填充上三角。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,a[100][100]={0}, x=0, y=0, z=1;
scanf("%d",&n);
a[x][y]=1;
while (z < n * (n+1) / 2)
{
//往右
while(y+1 < n && !a[x][y+1])
{
a[x][++y]=++z;
}
//斜向下
while(x+1 < n && y-1 >= 0 && !a[x+1][y-1])
{
a[++x][--y] = ++z;
}
//往上
while(x-1 >= 0 && !a[x-1][y])
{
a[--x][y] = ++z;
}
}
//输出
for(x = 0;x < n; x++)
{
for(y = 0; y < n-x; y++)
{
printf("%4d ",a[x][y]);
}
printf("\n");
}
return 0;
}
Result: