Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,如果输入如下矩阵:
1  2 3 4
5  6 7 8
9  10  11  12
13 14  15  16则依次打印出数字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 ",numbers[start][i]);
 }
 if (start<endY)
 {
  //从上到下打印一列
  for (i=start+1; i<=endY; i++)
  {
   printf("%d ",numbers[i][endX]);
  }
 }
 if (start<endX&&start<endY)
 {
  //从右到左打印一行
  for (i=endX-1; i>=start; i--)
  {
   printf("%d ",numbers[endY][i]);
  }
 }
 if (start<endX&&start<endY-1)
 {
  //从下到上打印一列
  for (i=endY-1; i>start; i--)
  {
   printf("%d ",numbers[i][start]);
  }
 }
}本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/117702.htm