【1】题目
![](https://img-blog.csdnimg.cn/20210323152205466.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjEyNjY1,size_16,color_FFFFFF,t_70)
【2】思路
![](https://img-blog.csdnimg.cn/20210323152228698.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjEyNjY1,size_16,color_FFFFFF,t_70)
【3】代码
#pragma once
#ifndef PRINT_MATRIX
#define PRINT_MATRIX
#include<vector>
using namespace std;
class PrintMatrix
{
public:
PrintMatrix();
~PrintMatrix();
void ShowMatrix(vector<vector<int>> array, int rows, int clos);
void ShowMatrixIncircle(vector<vector<int>> array,int rows,int clos ,int start);
private:
protected:
};
#endif // !PRINTMATRIX
#include "pch.h"
#include "PrintMatrix.h"
#include<iostream>
using namespace std;
PrintMatrix::PrintMatrix()
{
}
PrintMatrix::~PrintMatrix()
{
}
void PrintMatrix::ShowMatrixIncircle(vector<vector<int>> array, int rows, int clos, int start)
{
//设置边界条件
int endx = rows -start- 1;
int endy = clos - start - 1;
//从左到右打印
for (int i = start; i <= endy; i++)
{
cout<<array[start][i]<<" ";
}
cout << endl;
//从上到下打印
if (endx<rows)
{
for (int i = start+1; i <= endx; i++)
{
cout << array[i][endy] << " ";
}
cout << endl;
}
//从右到左打印
if (start < endy && start<endx)
{
for (int i = endy-1; i >= start; i--)
{
cout << array[endx][i] << " ";
}
cout<<endl;
}
//从下向上打印
if (start<endy && start<endx-1)
{
for (int i = endx-1; i >start; i--)
{
cout << array[i][start] << " ";
}
cout << endl;
}
}
void PrintMatrix::ShowMatrix(vector<vector<int>> array, int rows, int clos)
{
if (array.empty())
{
cout << "vector is empty!!" << endl;
}
int start = 0;
while (rows >= 2 * start&&clos >= 2 * start)
{
ShowMatrixIncircle(array, rows, clos, start);
start++;
}
}
// Test20.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include<vector>
#include"PrintMatrix.h"
using namespace std;
vector<vector<int>> GenerateMatrix(int rows, int clos)
{
vector<vector<int>> Matrix;
if (!Matrix.empty())
{
Matrix.clear();
}
for (int i =0; i < rows; i++)
{
vector<int> rowsvector;
for (int j = 0; j < clos; j++)
{
int value=(i+1) * (j+1);
rowsvector.push_back(value);
cout <<left<< value << " ";
}
Matrix.push_back(rowsvector);
rowsvector.clear();
cout << endl;
}
return Matrix;
}
void main()
{
vector<vector<int>> Matrix;
Matrix = GenerateMatrix(5, 5);
cout << endl;
PrintMatrix myprint;
myprint.ShowMatrix(Matrix,5,5);
}
【4】结果
![](https://img-blog.csdnimg.cn/2021032315240566.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjEyNjY1,size_16,color_FFFFFF,t_70)