输入一个自然数N,要求输出如下的方阵,即边长为2N-1. N在中心出现-次, 其余位置上的数向外增大,c++
时间: 2024-10-29 22:21:01 浏览: 23
在C++中,你可以使用嵌套循环以及数组或者二维动态数组来创建这样的矩阵。下面是一个简单的示例代码,它会生成一个边长为2*N - 1的矩阵,并按照您描述的方式填充数字:
```cpp
#include <iostream>
using namespace std;
void printMatrix(int N) {
int matrix[2 * N][2 * N]; // 创建一个大小为(2N) x (2N)的二维数组
int num = -N; // 中心元素
int direction = 1; // 初始方向向右上
for (int i = N - 1; i >= 0 && i < 2 * N; ++i) { // 上下行
for (int j = N - 1; j >= 0 && j < 2 * N; ++j) { // 左右列
matrix[i][j] = num;
if (direction == 1) { // 向右上移动
num++;
if (i + direction == 2 * N || j + direction == 2 * N) {
direction = -1; // 改变方向为向下左
}
} else if (direction == -1) { // 向下左移动
num++;
if (i + direction == 0 || j + direction == 0) {
direction = 1; // 改变方向为向右上
}
}
}
}
// 打印矩阵
for (int i = 0; i < 2 * N; ++i) {
for (int j = 0; j < 2 * N; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int N;
cout << "Enter a natural number N: ";
cin >> N;
printMatrix(N);
return 0;
}
```
当你运行这个程序并输入一个自然数N,它会打印出对应大小的矩阵。记得提供一个合适的N值。
阅读全文