输入任意阶数,即可打对应印蛇形矩阵。原理是根据蛇形矩阵的性质,运用矩阵行列对下个数字打印的方向进行判别,从而打印出对应的数字。详情请看如下参考代码。
参考代码:
#includeint 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("%dt", data[a][b]); } printf("n"); printf("n"); } }
运行结果:



