//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
#include<iostream>
#include<stdio.h>
void PrintMatrixInCircle(int *numbers, int columns, int rows, int start);
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)
{
PrintMatrixInCircle(numbers,columns,rows,start);
++start;
}
}
void PrintMatrixInCircle(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];
int number=*(numbers +start*columns +i);
printf("%d ",number);
}
//从上到下打印一列
if(start<endy)
{
for(int i=start+1;i<=endy;++i)
{
int number=*(numbers +i*columns +endx);//numbers[i][endx];
printf("%d ",number);
}
}
//从右向左打印一行
if(start<endx && start<endy)
{
for(int i=endx-1;i>=start;--i)
{
int number=*(numbers +endy*columns +i);//numbers[endy][i];
printf("%d ",number);
}
}
//从下到上打印一列
if(start<endx && start<endy-1)
for(int i=endy-1;i>=start+1;--i)
{
int number=*(numbers +i*columns +start);//numbers[i][start];
printf("%d ",number);
}
}
void main()
{
int matrix[3][3]={1,2,3,4,5,6,7,8,9};
int columns = 3;
int rows = 3;
PrintMatrixClockwisely(*matrix, columns, rows);
}
顺时针打印矩阵
最新推荐文章于 2024-02-16 21:12:16 发布