////////////////////////////////////////////////// ///////////////////////////////////
// 2. topic 20 clockwise print matrix
// input a matrix , according to a clockwise turn from outside to inside to print out each number! ! !
void PrintMatirxInCircle ( int (* ppArray) [ . 4 ], int iRows, int iColumns, int iStart) { int iEndX iColumns = - . 1 - iStart; int iEndY iRows = - . 1 - iStart; // 1. Print a line from left to right for ( int I = iStart; I <= iEndX; I ++ ) { the printf ( " % 2D " , ppArray [iStart] [I]); } // 2. printed upside down an IF (iStart < iEndY) { for ( int I = iStart + . 1 ; I <iEndY; I ++ ) { the printf ( " % 2D " , ppArray [I] [iEndX]); } } // 3. row from right to left printing IF (iStart <&& iEndX iStart < iEndY) { for ( int I = iEndX - . 1 ; I> = iStart; i-- ) { the printf ( " % 2D " , ppArray [iEndY] [I]); } } // 4. from bottom to top print a line IF (iStart <iEndX && iStart <iEndY -1) { for (int i = iEndY - 1; i >= iStart + 1; i--) { printf("%2d ", ppArray[i][iStart]); } } } void PrintMatirxClockwisely(int (*ppArray)[4], int iRows, int iColumns) { if (NULL == ppArray || iRows <= 0 || iColumns <= 0) { return; } int iStart = 0; while (iColumns > iStart * 2 && iRows > iStart * 2) { // 打印一圈数据 PrintMatirxInCircle(ppArray, iRows, iColumns, iStart); iStart++; } } void PrintMatirxTestFunc() { cout << "\n\n --------------- PrintMatirxTestFunc Start -------------->" << endl; int aiArray[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; PrintMatirxClockwisely(aiArray, 4, 4); cout << "\n\n --------------- PrintMatirxTestFunc End -------------->" << endl; }