蛇形填数 在n×n方阵里填入1,2,…,n×n,要求填成蛇形。例如,n=4时方阵为: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 为了美化效果,我们设置每个数宽度为4,填充符号为*。先输入n值,n≤10。 【样例输入】 4 【样例输出】 ***1***2***3***4 **12**13**14***5 **11**16**15***6 **10***9***8***7 #include <iostream> #include <iomanip> #define X 10 using namespace std;
时间: 2023-07-06 19:36:39 浏览: 80
这道题是一个比较典型的模拟题,需要按照蛇形的顺序填入数字,同时需要格式化输出。以下是代码实现:
```
#include <iostream>
#include <iomanip>
#define X 10
using namespace std;
int main() {
int n;
int a[X][X];
cin >> n;
int x = 0, y = n - 1, cnt = 1;
while (cnt <= n * n) {
a[x][y] = cnt++;
if (x == y) {
x++, y--;
} else if (x + 1 == y) {
x += 2, y--;
} else if (x == 0) {
x = y - 1, y--;
} else {
x--, y--;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(4) << (a[i][j] ? to_string(a[i][j]) : "*");
}
cout << endl;
}
return 0;
}
```
其中,我们使用了一个二维数组 a 表示填充的数字,同时使用了两个指针 x 和 y 表示当前要填充的位置。在填充的过程中,我们按照蛇形的顺序进行填充,如果当前位置是左上角或右下角,我们就向下移动一格;如果当前位置是左下角,我们就向右移动两格;否则,我们就向左上移动一格。最后,我们使用 setw 控制输出格式,同时使用 to_string 将数字转化为字符串,方便格式化输出。
阅读全文