题目
这道题可以有两种写法:
第一种:找规律,如下:
#include <stdio.h>
int main()
{
int n,i,j,res;
while (scanf("%d",&n)!=EOF)
{
for (j=1; j<=n; j++) //首行
{
if (j!=n)
printf("%3d",j);
else{
printf("%3d
",j);
res = ++j;
}
}
for (i=1; i<n-1; i++)//中间行
{
for (j=0; j<n; j++)//中间行数值
{
if (j==0)//第一个
printf("%3d",4*(n-1)-i+1);
else if (j==n-1)//最后一个
{
printf("%3d
",res);
res++;
}
else printf(" ");
}
}
for (i=0; i<n; i++)//尾行
{
if (i!=n-1)
printf("%3d",3*(n-1)+1-i);
else
printf("%3d
",2*n-1);
}
}
return 0;
}
第二种:蛇形填数,如下:
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j;
int a[20][20];
while(~scanf("%d",&n),n)
{
memset(a,0,sizeof(a));
int t = 0;
i = j = 1;
while( j < n)//第一排(向右)
a[i][j++] = ++t;
while( i < n)//右边一列(向下)
a[i++][j] = ++t;
while(j >1)
a[i][j--] = ++t;
while(i > 1)
a[i--][j] = ++t;
for(i = 1;i<=n;i++)
{
for(j = 1;j<=n ; j++)
{
if(a[i][j]==0)
printf(" ");
else{
printf("%3d",a[i][j]);
}
}
printf("
");
}
}
return 0;
}
第一次听说蛇形填数数这个名词,所以记之。。。