//蛇形填法
#include "stdio.h"
void main()
{
int n, i, j;
scanf("%d", &n);
int t = n*n;
for(i = n; i > 0; i--)
{
for(j = n; j > 0; j--)
printf("%5d", t--);
printf("/n");
}
}[/code]
[code]// 6.2
#include "stdio.h"
#define N 15
void main()
{
int sum, j, t = 1, start, end;
static int a[N][N];
for(sum = 0; sum < 2*N -1; sum++)
{
start = (sum < N)?0:sum-(N-1);
end = (sum < N)?sum:(N-1);
for(j = start; j <= end; j++)
(sum%2)?(a[j][sum-j] = t++):(a[sum-j][j] = t++); //(sum%2)控制环绕方向
}
for(sum = 0; sum < N; sum++)
{
for(j = 0; j < N; j++)
printf("%5d", a[sum][j]);
printf("/n");
}
}
用于控制方向, 若改为a[j][i], 则方向相反
#define N 10
void main()
{
static int a[N][N], i, j, num;
int start = 0, end = N -1;
for(int t =0; t <= N/2; t++, start++, end--, i++, j++)
{
for(i = start; i < end; i++)
a[i][j] = ++num;
for(j = start; j < end; j++)
a[i][j] = ++num;
for(i = end; i > start; i--)
a[i][j] = ++num;
for(j = end; j > start; j--)
a[i][j] = ++num;
if(start == end)
a[start][end] = ++num;
}
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
printf("%4d", elem);
printf("/n");
}
}
//回转填法
#include <stdio.h>
#define elem a[i][j] //