4.如下所示是一个 5X5阶的螺旋方阵,编程打印出此形式的nX n(n<10)的方阵(顺时针方向旋转)。
4#include <stdio.h>
int main(int argc, char** argv) {
int a[10][10],i,j,k=0,m,n;
scanf("%d",&n);
if(n%2==0)
{
m=n/2;//偶数阶螺旋方阵有m圈(m=n/2)
}
else
{
m=n/2+1;//奇数阶螺旋方阵有m圈(m=n/2+1)
}
for(int i = 0; i < m; i++) {
for(int j = i; j<n-i; j++) {//上横数字
k++;
a[i][j]=k;
}
for(int j = i+1; j<n-i; j++) {//右竖行数字
k++;
a[j][n-i-1]=k;
}
for(int j = n-i-2; j>=i; j--) {//下横数字
k++;
a[n-i-1][j]=k;
}
for(int j = n-i-2; j>=i+1; j--) {//左竖行数字
k++;
a[j][i]=k;
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
如输入5,则图形如下:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9