#include <stdio.h>
int main()
int main()
{
int n,i,j;
printf("乌兰螺旋 请输入n*n矩阵的大小 n=");
while (scanf("%d",&n)!=EOF) //实现程序的多次运行
{
int date[n][n],jz=n*n,k=0;
while (k<=n/2&&n%2==0) //根据乌兰螺旋的特点,n为偶数时,最后一个数在右上方
{
for(i=n-k-1;i>=k;i--) //从最后一个数向右移动
date[k][i]=jz--;
for(i=k+1;i<=n-k-1;i++) //由上向下移动
date[i][k]=jz--;
for(i=k+1;i<=n-k-1;i++) //由左向右移动
date[n-k-1][i]=jz--;
for(i=n-k-2;i>=k+1;i--) //由下向上移动
date[i][n-k-1]=jz--;
k++;
}
while (k<=n/2&&n%2!=0) //n为奇数,最后一个数在左下方
{
for(i=k;i<=n-k-1;i++) //由左向右移动
date[n-k-1][i]=jz--;
for(i=n-k-2;i>=k;i--) // 由下向上移动
date[i][n-k-1]=jz--;
for(i=n-k-2;i>=k;i--) //由右向左移动
date[k][i]=jz--;
for(i=k+1;i<=n-k-2;i++) //由上向下移动
date[i][k]=jz--;
k++;
}
for(i=0; i<n; i++) //使矩阵输出
{
{
for(j=0; j<n; j++)
printf("%5d",date[i][j]);
}
printf("\n");
}
}
return 0;
}
int n,i,j;
printf("乌兰螺旋 请输入n*n矩阵的大小 n=");
while (scanf("%d",&n)!=EOF) //实现程序的多次运行
{
int date[n][n],jz=n*n,k=0;
while (k<=n/2&&n%2==0) //根据乌兰螺旋的特点,n为偶数时,最后一个数在右上方
{
for(i=n-k-1;i>=k;i--) //从最后一个数向右移动
date[k][i]=jz--;
for(i=k+1;i<=n-k-1;i++) //由上向下移动
date[i][k]=jz--;
for(i=k+1;i<=n-k-1;i++) //由左向右移动
date[n-k-1][i]=jz--;
for(i=n-k-2;i>=k+1;i--) //由下向上移动
date[i][n-k-1]=jz--;
k++;
}
while (k<=n/2&&n%2!=0) //n为奇数,最后一个数在左下方
{
for(i=k;i<=n-k-1;i++) //由左向右移动
date[n-k-1][i]=jz--;
for(i=n-k-2;i>=k;i--) // 由下向上移动
date[i][n-k-1]=jz--;
for(i=n-k-2;i>=k;i--) //由右向左移动
date[k][i]=jz--;
for(i=k+1;i<=n-k-2;i++) //由上向下移动
date[i][k]=jz--;
k++;
}
for(i=0; i<n; i++) //使矩阵输出
{
{
for(j=0; j<n; j++)
printf("%5d",date[i][j]);
}
printf("\n");
}
}
return 0;
}