代码中有注释可以帮助理解
直接看代码吧
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int k = n * n;//k是蛇形矩阵的最大数
int arr[10][10] = { 0 };
int i=0, j=0;
int m = 1;//判断循环了几次
while (k) {//当k为0时结束循环
for (;j < n+1-m;j++)//向右输出
{
arr[i][j] = k--;
}
j--;
i += 1;
for (;i < n+1-m;i++)//向下输出
{
arr[i][j] = k--;
}
i--;
j -= 1;
for (;j >= m-1;j--)//向左输出
{
arr[i][j] = k--;
}
j++;
i -= 1;
for (;i >= m;i--)//向上输出
{
arr[i][j] = k--;
}
i++;
j++;
m++;
}
//打印蛇形矩阵
for (int x = 0;x < n;x++)
{
for (int y = 0;y < n;y++)
{
printf("%-3d ", arr[x][y]);
}
printf("\n");
}
return 0;
}
有不理解的可以试着把m带入循环理解一下
感谢观看,有错误请指出