输出一个n×n的蛇形方阵。(每一行数字之间一个空格隔开)
时间: 2024-01-14 15:02:33 浏览: 120
蛇形方阵 输出一个 n 阶方阵,其元素排列方式为:从左上角开始按列顺序呈现出蛇形
以下是输出一个n×n的蛇形方阵的C++代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入方阵阶数n:";
cin >> n;
int matrix[n][n];
int num = 1; // 初始化第一个数字为1
int x = 0, y = 0; // 初始化位置为(0,0)
int direction = 0; // 初始化方向为向右
while (num <= n*n) {
matrix[x][y] = num++; // 将当前数字填入矩阵,并将数字加1
if (direction == 0) { // 向右
if (y == n-1 || matrix[x][y+1] != 0) { // 到达右边界或右侧格子已经填过数字
direction = 1; // 纠正方向为向下
x++;
}
else {
y++;
}
}
else if (direction == 1) { // 向下
if (x == n-1 || matrix[x+1][y] != 0) { // 到达下边界或下方格子已经填过数字
direction = 2; // 纠正方向为向左
y--;
}
else {
x++;
}
}
else if (direction == 2) { // 向左
if (y == 0 || matrix[x][y-1] != 0) { // 到达左边界或左侧格子已经填过数字
direction = 3; // 纠正方向为向上
x--;
}
else {
y--;
}
}
else { // 向上
if (x == 0 || matrix[x-1][y] != 0) { // 到达上边界或上方格子已经填过数字
direction = 0; // 纠正方向为向右
y++;
}
else {
x--;
}
}
}
// 输出蛇形方阵
cout << "蛇形方阵为:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
该程序使用二维数组存储蛇形方阵,通过模拟蛇的运动轨迹,依次将数字填入矩阵中,最后输出蛇形方阵。
阅读全文