编写C➕➕程序输出左上角为直角三角形形状每一层数字数量逐渐减少一个的n*n矩阵要求n通过键盘输入,例如n=5时,矩阵为: 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9
时间: 2023-06-18 20:05:22 浏览: 82
以下是 C++ 代码实现:
```
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入n的值:";
cin >> n;
int matrix[n][n];
int num = 1;
int row = 0, col = 0;
int direction = 0; // 0 表示向右,1 表示向下,2 表示向左,3 表示向上
while (num <= n * n) {
matrix[row][col] = num;
num++;
if (direction == 0) {
if (col == n - 1 || matrix[row][col + 1] != 0) {
direction = 1;
row++;
} else {
col++;
}
} else if (direction == 1) {
if (row == n - 1 || matrix[row + 1][col] != 0) {
direction = 2;
col--;
} else {
row++;
}
} else if (direction == 2) {
if (col == 0 || matrix[row][col - 1] != 0) {
direction = 3;
row--;
} else {
col--;
}
} else if (direction == 3) {
if (row == 0 || matrix[row - 1][col] != 0) {
direction = 0;
col++;
} else {
row--;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << "\t";
}
cout << endl;
}
return 0;
}
```
程序中使用二维数组 `matrix` 存储矩阵中的数字,初始化为 0。使用变量 `num` 记录当前要填入的数字,从 1 开始逐渐增加。使用变量 `row` 和 `col` 记录当前要填入数字的位置。使用变量 `direction` 记录当前的填数方向。
程序首先通过键盘输入获取矩阵的大小,然后按照顺序填入数字。填数的顺序按照从左到右、从上到下、从右到左、从下到上的顺序不断循环。
最后将填好的矩阵输出即可。
阅读全文