吉林大学超星MOOC高级语言程序设计 实验04 数组及其在程序设计中的应用(2021级)螺旋矩阵
题目编号:Exp04-Enhance05,freshman-1050,GJBook3-0622
题目名称:螺旋矩阵
题目描述:
螺旋矩阵指一个呈螺旋状的数字矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。如下所示为3阶螺旋矩阵。
输入:输入一个正整数 N (N<=30),标明矩阵阶数。
输出:按螺旋矩阵形式输出整数 1~N^2, 共 N 行N 列,每个数字输出占4个西文字符宽度,右对齐,最后一个数字后无多余字符。
样例:
输入: 15
输出:
//螺旋矩阵 i为圈数
#include<stdio.h>
int main(){
int a[31][31],n,i,cnt=1,j,ret=0;
scanf("%d",&n);
for(i=1;cnt<=n*n-ret;i++){//先生成矩阵
for(j=i;j<=n+1-i&&cnt<=n*n;j++){//将递增的cnt放入不同位置
a[i][j]=cnt++;
}
for(j=i+1;j<=n-i&&cnt<=n*n;j++){
a[j][n+1-i]=cnt++;
}
for(j=n+1-i;j>=i&&cnt<=n*n;j--){
a[n+1-i][j]=cnt++;
}
for(j=n-i;j>i&&cnt<=n*n;j--){
a[j][i]=cnt++;
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%4d",a[i][j]);
}
if(i!=n)printf("\n");
}
return 0;
}