用C++写代码,并逐句解释。要求:输入n,输出一个n*n的数字方阵,数字沿左上右下对角线蛇形排列。如:输入4,输出:第一行:1 3 4 10;第二行:2 5 9 11;第三行:6 8 12 15;第四行:7 13 14 16。代码参考思路:遍历右上左下对角线 取值范围是 0到 (n-1 )*2。如果下标和为偶数按一个方向输出数字,下表和为奇数按另一个方向输出数字
时间: 2023-12-03 16:46:21 浏览: 173
以下是对应的C++代码:
```c++
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n][n];
int num = 1; // 当前数字
for(int idx = 0; idx <= (n-1)*2; idx++) // 遍历右上左下对角线
{
if(idx % 2 == 0) // 下标和为偶数
{
for(int i = 0; i < n; i++)
{
int j = idx - i;
if(j < 0 || j >= n) continue; // 超出范围
arr[i][j] = num;
num++;
}
}
else // 下标和为奇数
{
for(int i = n-1; i >= 0; i--)
{
int j = idx - i;
if(j < 0 || j >= n) continue; // 超出范围
arr[i][j] = num;
num++;
}
}
}
// 输出方阵
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
首先,我们通过 `cin` 获取输入的数字 `n`,然后定义一个 `n*n` 的二维数组 `arr` 来存储数字方阵。接着,我们遍历右上左下对角线,取值范围是 `0` 到 `(n-1)*2`。如果下标和为偶数,则按一个方向输出数字;如果下标和为奇数,则按另一个方向输出数字。在遍历的过程中,我们将数字存储在二维数组 `arr` 中。
最后,我们遍历输出二维数组 `arr` 中存储的数字方阵。
阅读全文