顺时针打印矩阵

来源:互联网 发布:人工智能编程 编辑:程序博客网 时间:2024/05/16 05:33

题目要求:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如输入如下一个矩阵:

则依次打印出: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);

}

}

0 0
原创粉丝点击