26~~
int matrix[20][20];
int top=0,bottom=n-1,left=0,right=n-1;//四个变量边界 n-1是因为下标从零开始
int num=1;//要填充的数字
while(num<=nn)
{
int i;
for(i=left;i<=right&& num <= nn;i++)//先填上边界
matrix[top][i]=num++;
top++;//上边界下移一行
for(i=top;i<=bottom&& num <= nn;i++)//再填右边界
matrix[i][right]=num++;
right--;
for(i=right;i>=left&& num <= nn;i--)//接着下边界
matrix[bottom][i]=num++;
bottom--;
for(i=bottom;i>=top&& num <= n*n;i--)//>= 和--是因为在表格里 数组从上到下递增
matrix[i][left]=num++;
left++;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%d ",matrix[i][j]);
printf("\n");
}

bug:
收获:
浙公网安备 33010602011771号