用数组写出螺旋方阵
程序员文章站
2022-07-14 23:51:32
...
代码示例:
#include<stdio.h>
int main()
{
int num;
int cnt;
int top,bottom;
int i,j;
int arr[10][10];
printf("请输入螺旋方阵的行数(1-10):");
scanf("%d",&num);
cnt=1;
top=0;
bottom=num-1;
while(cnt<=num*num&&top<=bottom)
{
i=top;
j=top;
if(top==bottom)
{
arr[i][j]=cnt;
break;
}
for(j=top;j<bottom;j++)
{
arr[i][j]=cnt;
cnt++;
}
for(i=top;i<bottom;i++)
{
arr[i][j]=cnt;
cnt++;
}
for(j=bottom;j>top;j--)
{
arr[i][j]=cnt;
cnt++;
}
for(i=bottom;i>top;i--)
{
arr[i][j]=cnt;
cnt++;
}
top++;
bottom--;
}
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
printf("%3d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
和打印图案的算法相差无几,底部和顶部打印所以设置
top bottom两个变量,算法核心在整个while语句循环体中