/*
1 2 3 4 5 6 7 8
28 29 30 31 32 33 34 9
27 48 49 50 51 52 35 10
26 47 60 61 62 53 36 11
25 46 59 64 63 54 37 12
24 45 58 57 56 55 38 13
23 44 43 42 41 40 39 14
22 21 20 19 18 17 16 15
by wzt
*/
#include <stdio.h>
#define M 8
int a[M][M];
void make_num(int n);
void print_num();
void make_num(int n)
{
int i = 0,j = 0,m = 1,k = 0,l = 0;
int Max,N;
N = n;
Max = N*N;
while(m <= Max){
if( k >= N ) break;
for( i = k;i < N; i++ ){
a[k][i] = m++;
}
l = k+1;
for( i = l;i < N; i++ ){
a[i][N-1] = m++;
}
for( j = N-2;j >= k;j-- ){
a[N-1][j] = m++;
}
for( i = N-2;i > k;i-- ){
a[i][k] = m++;
}
k++;
N--;
}
}
void print_num()
{
int i,j;
for( i = 0;i < M;i++ ){
for( j = 0;j < M;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
int main(void)
{
make_num(M);
print_num();
return 0;
}
|