/*(螺旋矩阵)
【问题描述】数学上有一种矩阵叫旋转矩阵,非常的有意思,所谓旋转矩阵,就是在N阶矩阵中,起始数1置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
【输入】输入文件名"matrix.in"
输入文件由一行或多行构成,每行由一个正整数N组成,(N不大于100)。输入文件的最后一行是'#' 表示文件结束。。
【输出】输出文件名"estdout.pc2"
对于每一组数据,输出一个N阶的旋转矩阵。两组输出之间不要额外的空行。矩阵中同一行的数字用一个空格分开。
程序运行后结果示例:
【样例输入】
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
*/
#include"stdio.h"
void main()
{
int a[101][101];
int n,s,i,j,u,v,k=1;
scanf("%d",&n);
for(s=1;s<=n/2;s++)
{
for(i=s;i<=n+1-s;i++) //求上面行
a[s][i]=k++;
for(j=s+1;j<=n+1-s;j++) //求右边列
a[j][n+1-s]=k++;
for(u=n-s;u>=s;u--) //求下面行
a[n+1-s][u]=k++;
for(v=n-s;v>s;v--) //求左边的列
a[v][s]=k++;
}
if(n%2!=0) //求奇阶方阵的中间元素
a[n/2+1][n/2+1]=k;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
螺旋矩阵
最新推荐文章于 2023-01-05 20:42:49 发布