通过如下程序来打印旋转方阵
思想:
填充数组后通过控制输出的格式,就可以打印顺转、逆转的旋转方阵
#include<stdio.h>
int a[100][100];
int m = 1;
void fill(int i,int n)
{
int u=i,v=i,j; //横坐标u,列坐标v,j用于计数
if(n<=0) //边界条件
return;
if(n==1) //边界条件
a[i][i]=m;
for(j=1;j<=n-1;j++) //从左到右填充
a[u][v++]=m++;
for(j=1;j<=n-1;j++) //从右上到右下填充
a[u++][v]=m++;
for(j=1;j<=n-1;j++) //从右到左填充
a[u][v--]=m++;
for(j=1;j<=n-1;j++) //从下向上填充
a[u--][v]=m++;
fill(i+1,n-2); //递归调用
}
int main(){
int i,j,n;
scanf("%d",&n); //输入阶数
fill (1,n); //填充
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) //打印顺转方阵
printf("%4d",a[i][j]);
printf("\n"); }
for(i=1;i<=4*n+2;i++) //打印分隔线
printf("*"); printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) //打印逆转方阵
printf("%4d",a[j][i]);
printf("\n"); }
}
运行结果