

我想学习
程序代码:#include<stdio.h>
int f(int row, int col, int n)
{
if(n - row - 1 < row) row = n - row - 1;
if(n - col - 1 < col) col = n - col - 1;
return ((row < col) ? row : col) + 1;
}
int main()
{
int i, j, n;
scanf("%d", &n);
for(i = 0; i < n; i++, putchar('\n'))
for(j = 0; j < n; j++)
printf("%4d", f(i, j, n));
return 0;
}

程序代码:#include <stdio.h>
#define SIZE 7
void Init(int a[SIZE][SIZE])
{
int i,j;
for(i=SIZE/2;i>=0;i--)
for(j=i;j<SIZE-i;j++)
a[i][j]=a[j][i]=a[SIZE-i-1][j]=a[j][SIZE-i-1]=i+1;
}
void main()
{
int i,j;
int a[SIZE][SIZE];
Init(a);
for(i=0;i<SIZE;i++,printf("\n"))
for(j=0;j<SIZE;j++) printf("%4d",a[i][j]);
}
程序代码:#include <stdio.h>
#define M 7
#define N 7
main()
{
int a[M][N]={1,0}, *p=a, b[4]={N,1,-N,-1}, k=0, i, j;//b[4]让*p绕圈
while( (++k)<M ) //每绕完一圈+1
for( i=0; i<4; i++ ) //p+b[0]下移,p+b[1]右移,p+b[2]上移,p+b[3]左移
for( ; !(*(p+b[i])); *p=k)//判断是否继续向同一个方向移动
p += b[i];
for( i=0; i<M; i++, putchar('\n')) //打印数组
for( j=0; j<N; j++ )
printf("%3d", a[i][j]);
}