21xrx.com
2025-06-19 23:16:06 Thursday
文章检索 我的文章 写文章
如何用C++打印回文矩阵?
2023-07-12 12:20:11 深夜i     32     0
C++ 回文矩阵 打印

回文矩阵是一种非常有趣的矩阵,它在水平方向和垂直方向中心两侧的元素对称,形成一种像回文诗一样的美妙效果。如果你想用C++语言打印出这样的矩阵,可以按照下面的步骤来实现。

第一步,定义矩阵大小和数据类型。我们可以定义一个二维int数组,用来存储矩阵中的元素,同时定义矩阵的行和列数。

const int rows = 5;
const int cols = 5;
int matrix[rows][cols];

第二步,填充矩阵。为了打印出一个回文矩阵,我们需要将数组中的元素按照一定的规律填充。一种简单的方法是先将矩阵的数值从左往右、从上往下依次填充,然后再将右下角到左上角的对角线两侧的元素进行对称,即可得到回文矩阵。

for (int i = 0; i < rows; i++) {
  for (int j = 0; j < cols; j++) {
    matrix[i][j] = i * cols + j + 1;
  }
}
for (int i = 0; i < rows; i++) {
  for (int j = 0; j < cols / 2; j++) {
    matrix[i][cols - j - 1] = matrix[i][j];
  }
}
for (int i = 0; i < rows / 2; i++) {
  for (int j = 0; j < cols; j++) {
    matrix[rows - i - 1][j] = matrix[i][j];
  }
}

第三步,打印矩阵。在控制台输出矩阵中的每一个元素,使用制表符来调整输出格式。

for (int i = 0; i < rows; i++) {
  for (int j = 0; j < cols; j++) {
    cout << matrix[i][j] << "\t";
  }
  cout << endl;
}

完整代码如下:

#include <iostream>
using namespace std;
const int rows = 5;
const int cols = 5;
int matrix[rows][cols];
int main() {
  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
      matrix[i][j] = i * cols + j + 1;
    }
  }
  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols / 2; j++) {
      matrix[i][cols - j - 1] = matrix[i][j];
    }
  }
  for (int i = 0; i < rows / 2; i++) {
    for (int j = 0; j < cols; j++) {
      matrix[rows - i - 1][j] = matrix[i][j];
    }
  }
  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
      cout << matrix[i][j] << "\t";
    }
    cout << endl;
  }
  return 0;
}

运行程序,即可看到输出如下的回文矩阵。

1    2    3    2    1
6    7    8    7    6
11   12   13   12   11
6    7    8    7    6
1    2    3    2    1

通过这种方法,我们不仅学会了如何用C++语言打印回文矩阵,还深入理解了如何按照一定规律填充一个二维数组。希望这篇文章能够对你的C++编程之路有所帮助。

  
  

评论区