顺时针打印矩阵

来源:互联网 发布:php图书管理系统下载 编辑:程序博客网 时间:2024/06/04 18:45

描述:给定一个矩阵,按照从外到里的顺序打印每一个
数字
分析
1、找到每个圈打印开始的地方(发现这个数的下标*2只要小于总的行和列就行)
2、每找到一个就循环打印
注意:
边界条件

#define  _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;void PrintMatexInCycle(int (*arr)[2], int row, int col, int start){    int endX = col - 1 - start;//行的结束位置    int endY = row - 1 - start;//列的结束位置    //从左到右打印    for (int i = start; i <= endX; i++)    {        cout << arr[start][i] << " ";    }    //从上到下打印    if (start < endY)    {        for (int i = start+1; i <= endY; i++)        {            cout << arr[i][endX] << " ";        }    }    //从右向左打印    if (start < endX && start < endY)    {        for (int i = endX - 1; i >= start; --i)        {            cout << arr[endY][i];        }    }    //从下到上打印    if (start < endX && start < endY - 1)    {        for (int i = endY - 1; i>=start + 1; --i)        {            cout << arr[i][start] << " ";        }    }}void PrintMatrixClowkwisely(int(*arr)[2],int row,int col){    if (arr == NULL || row <= 0 || col <= 0)    {        return;    }    int start = 0;    //找到循环打印的结束条件,每找到一个开始点打印以这个点为开始的一圈    while (start * 2 < row && start * 2 <= col)    {        PrintMatexInCycle(arr, row, col, start);//调用此函数一次打印一圈        ++start;    }}int main(){    int arr[][2]{{ 1, 2 }, { 3, 4 }};    PrintMatrixClowkwisely(arr, 2, 2);    return 0;}
0 0