题目:输出螺旋方阵 问题描述 螺旋方阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变 大,向左变大,向上变大,下面是一个5*5阶的螺旋方阵。输入螺旋方阵的阶数N,按行 输出该螺旋方阵。
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>
int main()
{
int m,n,i,j,t=1;
int a,b,x,y;
int orginal[100][100]={0};
scanf("%d %d",&m,&n);
a=m;b=n;
//对orginal[i][j]进行赋值
i=0;j=0;x=0;y=0;
while(t<=m*n){
//每循环一遍,未赋值部分减小一圈
if(t!=1){
a--;b--;
}
j=x;
for(;j<b&&t<=m*n;j++){
orginal[i][j]=t;t++;
}
i++;j--; y++;
for(;i<a&&t<=m*n;i++){
orginal[i][j]=t;t++;
}
i--;j--;
for(;j>=x&&t<=m*n;j--){
orginal[i][j]=t;t++;
}
i--;j++;
for(;i>=y&&t<=m*n;i--){
orginal[i][j]=t;t++;
}
i++;j++; x++;
}
//输出orginal[i][j]
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%-4d",orginal[i][j]);
}
printf("\n");
}
return 0;
}