题目编号: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; }