C++【课堂练习】蛇形填数,在nxn方阵里填入1,2,…,nxn,要求填成蛇形。例如,n=4时方阵为:为了美化效果,我们设置每个数宽度为4,填充符号为*。先输入n值,n≤10
时间: 2023-10-05 18:04:16 浏览: 130
以下是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个字符,不足的地方用空格补齐。
阅读全文