则依次打印出数字1、2、3、4、8、12、16、15、12、13、9、5、6、7、11、10。
//顺时针打印矩阵 void PrintMatrixClockwisely(int **numbers, int columns, int rows) { if (numbers==NULL||columns<=0||rows<=0) return; //开始位置标示,每圈开始坐标为(start,start) int start=0; while(columns>2*start&&rows>2*start) { //从(start,start)开始,顺时针打印一圈 PrintMatrixInCircle(numbers,columns,rows,start); start++; } } //顺时针打印一圈 void PrintMatrixInCircle(int **numbers, int columns, int rows, int start) { int i; int endX=columns-1-start; int endY=rows-1-start; //从左到右打印一行 for (i=start; i<=endX; i++) { printf("%d\t",numbers[start][i]); } if (start<endY) { //从上到下打印一列 for (i=start+1; i<=endY; i++) { printf("%d\t",numbers[i][endX]); } } if (start<endX&&start<endY) { //从右到左打印一行 for (i=endX-1; i>=start; i--) { printf("%d\t",numbers[endY][i]); } } if (start<endX&&start<endY-1) { //从下到上打印一列 for (i=endY-1; i>start; i--) { printf("%d\t",numbers[i][start]); } } }
原文地址:http://blog.csdn.net/lsh_2013/article/details/45767257