C语言 实验7-2-9 螺旋方阵 (20分)
程序员文章站
2022-03-13 13:41:35
...
#include<stdio.h>
int main (void)
{
int n,i,j,a[10][10]={0},s=1;
scanf("%d", &n);
int end=n,st=0; // end:每次循环的最大下标 st:最小下标
int k=n; //记录一下 n的初始值,遍历输出时用
while (n > 1){
for (j=st; j<end-1; j++) // n-1个数字一组
a[st][j] = s++;
for (i=st; i<end-1; i++)
a[i][end-1] = s++;
for (j=end-1; j>st; j--)
a[end-1][j] = s++;
for (i=end-1; i>st; i--)
a[i][st] = s++;
n -= 2;
end -= 1;
st += 1;
}
if (k % 2 == 1) // 别漏了最中间的那个
a[st][end] = s;
for (i=0; i<k; i++){
for (j=0; j<k; j++)
printf("%3d", a[i][j]);
printf("\n");
}
return 0;
}