计算机精英协会考核题 —— 第二题:蛇形填数
题目
2.蛇形填数
给出 n * n 方阵,要求从 1 开始按顺序依次填写,填写方式如下:
n = 4 时,
1 8 9 16
2 7 10 15
3 6 11 14
4 5 12 13
输入 n,请打印出方阵。
代码
#include <stdio.h>
int main (void)
{
int n,a,b,c,d;
int i[10][10];
int p[10][10];
scanf("%d",&n); //给出n*n
for(a=0,c=1;a<n;a++)
{
for(b=0;b<n;b++)
{
i[a][b]=c++;
}
}
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
p[a][b]=i[b][a];
}
}
for(b=0,c=0;b<n;b++,c++)
{
if(b%2==0)
{
for(a=0,d=0;a<=n-1;a++,d++)
{
i[c][d]=p[a][b];
}
}
else
{
for(a=n-1,d=0;a>=0;a--,d++)
{
i[c][d]=p[a][b];
}
}
}
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
printf("%4d",i[b][a]);
}
printf("\n");
}
getchar();
return 0;
}