输入任意阶数,即可打对应印蛇形矩阵。原理是根据蛇形矩阵的性质,运用矩阵行列对下个数字打印的方向进行判别,从而打印出对应的数字。详情请看如下参考代码。
参考代码:
#include<stdio.h>
int n;
int i = 0; //行
int j = 0; //列
int k = 1; //运动方向. k =1 →; k=2 ↙; k=3 ↓ ;k=4 ↗
int data[100][100];
int main()
{
printf("输入矩阵阶数:\n");
scanf_s("%d", &n);
//------------------判断方向
while (i != n - 1 || j != n - 1)
{
if (k == 1)
{
data[i][j + 1] = data[i][j] + 1;
j++;
if (i == n - 1)
{
k = 4;
}
else
{
k = 2;
}
}
else if (k == 2)
{
data[i + 1][j - 1] = data[i][j] + 1;
j--;
i++;
if (j == 0 && i != n - 1)
{
k = 3;
}
else if (i == n - 1)
{
k = 1;
}
else
{
k = 2;
}
}
else if (k == 3)
{
data[i + 1][j] = data[i][j] + 1;
i++;
if (j == n - 1)
{
k = 2;
}
else
{
k = 4;
}
}
//-------------------------生成矩阵元素
else if (k == 4)
{
data[i - 1][j + 1] = data[i][j] + 1;
j++;
i--;
if (i == 0 && j != n - 1)
{
k = 1;
}
else if (j == n - 1)
{
k = 3;
}
else
{
k = 4;
}
}
}
//显示矩阵
for (int a = 0; a < n; a++)
{
for (int b = 0; b < n; b++)
{
printf("%d\t", data[a][b]);
}
printf("\n");
printf("\n");
}
}
运行结果: