順時針打印矩陣

/*
面試題20:順時針打印矩陣
*/

void PrintNumber(int number)
{
    printf("%d ",number);
}
//一步一步打印矩陣
void PrintMatixInCircle(int** numbers,int columns,int rows,int start)
{
    int endX = columns-1-start;
    int endY = columns-1-start;
 //從左到右打印一行
    for(int i = start;i<=endX;i++)
    {
        int number = numbers[start][i];
        PrintNumber(number);
    }
    //從上到下打印一列
    if(start<endY)
    {
        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(int i = endY-1;i>=start+1;--i)
        {
            int number = numbers[i][start];
            PrintNumber(number);
        }
    }
}
//打印矩陣
void PrintMatrixClockwisely(int** numbers,int columns,int rows)
{
    if(numbers == 0||columns<0||rows == 0)
        return ;
    int start = 0;
    while(columns>start*2 && rows>start*2)
    {
        PrintMatixInCircle(numbers,columns,rows,start);
        ++start;
    }
}
int main()
{
    int Matrix[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
     int **p = new int*[4];  
    for (int i=0; i<4; i++)  
    {  
        p[i] = Matrix[i];  
    }  

    PrintMatrixClockwisely(p,4,4);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章