。【课堂练习】蛇形填数,在nxn方阵里填入1,2,…,nxn,要求填成蛇形。例如,n=4时方阵为:为了美化效果,我们设置每个数宽度为4,填充符号为*。先输入n值,n≤10。。【样例输入】 。4 。【样例输出】 ***1***2***3***4**12**13**14***5**11**16**15***6**10***9***8***7
时间: 2023-07-12 12:06:42 浏览: 122
以下是 Python 代码实现:
```
n = int(input()) # 输入n值
matrix = [[0] * n for i in range(n)] # 初始化矩阵
num = 1 # 要填入的数字
for i in range(n):
if i % 2 == 0: # 偶数行从左往右填
for j in range(n):
matrix[i][j] = num
num += 1
else: # 奇数行从右往左填
for j in range(n-1, -1, -1):
matrix[i][j] = num
num += 1
# 输出结果
for i in range(n):
for j in range(n):
print('{:4d}'.format(matrix[i][j]), end='')
print()
```
运行结果:
```
4
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
```
相关问题
C++【课堂练习】蛇形填数,在nxn方阵里填入1,2,…,nxn,要求填成蛇形。例如,n=4时方阵为:为了美化效果,我们设置每个数宽度为4,填充符号为*。先输入n值,n≤10
以下是C++代码实现:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cout << "请输入n值(n≤10):";
cin >> n;
int matrix[10][10] = {0};
int num = 1; //当前填充的数字
int row = 0, col = n - 1; //起始位置
while (num <= n * n) {
matrix[row][col] = num;
if (num % n == 0) {
row++;
} else {
row--;
col--;
if (row < 0) {
row = n - 1;
}
if (col < 0) {
col = n - 1;
}
}
num++;
}
//输出结果
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(4) << matrix[i][j];
}
cout << endl;
}
return 0;
}
```
解释一下思路:
首先定义一个二维数组 `matrix` 来表示方阵。同时定义一个变量 `num` 来表示当前要填充的数字,初始值为1。
然后我们从右上角开始填充数字,填充完一个数字之后,根据该数字是不是n的倍数来决定下一个填充的位置。
如果是n的倍数,则填充在下一行;否则填充在左上方一格,同时行数减1,列数减1。注意边界条件,如果行数或列数小于0,则重置为n-1。
最后输出结果即可。其中 `setw(4)` 是C++中的一个输出格式控制符,表示输出宽度为4个字符,不足的地方用空格补齐。
c++实现蛇形填数,在 nXn 方阵里填入1.2 f .. nxn ,要求填成蛇形。例如, n =4时方阵为:为了美化效果,我们设置每个数宽度为4.填充符号为。先输入 n 值, n ≤10。 .【样例输入 .4 【样例输出】 。1234 。1213145 。1116156 ·1098*7
以下是C++实现蛇形填数的代码:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, num = 1;
cout << "请输入n值(n≤10):" << endl;
cin >> n;
int a[11][11] = {0};
int i = 1, j = 1;
a[i][j] = num++;
while (num <= n * n) {
while (j + 1 <= n && a[i][j + 1] == 0) {
a[i][++j] = num++;
}
while (i + 1 <= n && a[i + 1][j] == 0) {
a[++i][j] = num++;
}
while (j - 1 >= 1 && a[i][j - 1] == 0) {
a[i][--j] = num++;
}
while (i - 1 >= 1 && a[i - 1][j] == 0) {
a[--i][j] = num++;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << setw(4) << a[i][j];
}
cout << endl;
}
return 0;
}
```
运行结果如下:
```
请输入n值(n≤10):
4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
阅读全文