题目要求:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如输入如下一个矩阵:
则依次打印出:1,2,3 ,4,8,12,16,15,14,13,9,5,6,7,11,10.
主要程序如下:
void PrintMatrixClockwisely(int **numbers,int columns,int rows)
{
if(numbers==NULL||columns<=0||rows<=0)//保证传入的
return;
int start=0;
while(columns>start*2&&rows>start*2)
{
printMartixInCircle(numbers,columns,rows,start)
++start;
}
}
void printMartixInCircle(int **numbers,int columns,int rows,int start)//主体思想分四步走
{
int endX=columns-1-start;
int endY=rows-1-start;
}
for(int i=start;i<=endX;++i)//从左到右打印一行//第一步
{
int number=numbers[start,i];
printNumber(number);
}
if(start<endY)//保证不只一行,如果只有一行就没有后面的事了,最少2行一列//第二步
{
for(int i=start+1;i<=endY;i++)
{
int number=numbers[i][endX]
printNumber(number);
}
}
if(start<endX&&start<endY)//不仅不只一行,还要不只一列,最少要两行两列//第三步
{
for(int i=endX-1;i>=start;i--)
{
int number=numbers[endY][i];
printNumber(number);
}
}
if(start<endX&&start<endY-1)//保证至少是三行两列//第四步
{
for(i=endY-1;i>=start+1:--i)
int number=numbers[i][start];
printNumber(number);
}
}