复制
收藏
提问
全网
用C++编写下面题目代码: 方阵填数:在一个N×N的方阵中,填入1,2,.....n×n个数,并要求构成如下的格式: 例如n=4: 例如n=5: 输入格式:n(N<10) 输出格式: 每行每列对齐(数字靠右),每个数间至少间隔一个空格。最后有一空行。
刚刚
理解问题用C++编写下面题目代码: 方阵填数:在一个N×N的方阵中,填入1,2,.....n×n个数,并要求构成如下的格式: 例如n=4: 例如n=5: 输入格式:n(N<10) 输出格式: 每行每列对齐(数字靠右),每个数间至少间隔一个空格。最后有一空行。
已完成理解「用C++编写下面题目代码: 方阵填数:在一个N×N的方阵中,填入1,2,.....n×n个数,并要求构成如下的格式: 例如n=4: 例如n=5: 输入格式:n(N<10) 输出格式: 每行每列对齐(数字靠右),每个数间至少间隔一个空格。最后有一空行。」
展开阅读网页
C++代码实现
#include <iostream>
#include <iomanip>
using namespace std;
void fillMatrix(int n) {
int matrix[10][10] = {0};
int num = 1;
int layer = 1;
int direction = 0; // 0: right, 1: down, 2: left, 3: up
int row = 0, col = 0;
while (num <= n * n) {
matrix[row][col] = num++;
col += (direction == 0) ? 1 : 0;
row += (direction == 1) ? 1 : 0;
if ((direction == 0 && col == layer) || (direction == 1 && row == layer) ||
(direction == 2 && col == n - layer) || (direction == 3 && row == n - layer)) {
layer++;
direction = (direction + 1) % 4;
col = (direction == 0) ? layer - 1 : col;
row = (direction == 1) ? layer - 1 : row;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(4) << matrix[i][j];
}
cout << endl;
}
cout << endl; // 输出最后一行空行
}
int main() {
int n;
cin >> n;
fillMatrix(n);
return 0;
}
这段代码实现了在一个 $ N \times N $ 的方阵中填入 1 到 $ N^2 $ 的数字,并按照题目要求的蛇形格式进行填充。代码中使用了 fillMatrix
函数来完成填充逻辑,并通过 main
函数接收用户输入并调用 fillMatrix
函数。输出格式符合题目要求,每个数字靠右对齐,数字间至少间隔一个空格,并在最后输出一个空行。123456789
更专业一些
转笔记
专业
用C++编写下面题目代码:
方阵填数:在一个N×N的方阵中,填入1,2,.....n×n个数,并要求构成如下的格式:
例如n=4:
例如n=5:
输入格式:n(N<10)
输出格式:
每行每列对齐(数字靠右),每个数间至少间隔一个空格。最后有一空行。不在提醒