C語言實現順時針打印矩陣代碼

cnp5 9年前發布 | 2K 次閱讀 C/C++

    #include<stdio.h>

#include<stdlib.h>  

void printMatrix(int **matrix,int columns,int rows,int start)  
{  
    int x=columns-start-1;  
    int y=rows-start-1;  
    int i;  
    for(i=start;i<=x;i++)//先打印一行  
        printf("%d ",matrix[start][i]);  
    if(start<y)//從上往下  
    {  
        for(i=start+1;i<=y;i++)  
            printf("%d ",matrix[i][x]);  
    }  
    if(x>start&&y>start)//從右到左打印  
    {  
        for(i=x-1;i>=start;i--)  
            printf("%d ",matrix[y][i]);  
    }  
    if(x>start&&y>start+1)//從下到上打印  
    {  
        for(i=y-1;i>=start+1;i--)  
            printf("%d ",matrix[i][start]);  
    }  

}  

void matrixClock(int **matrix,int columns,int rows)  
{  
    if(matrix==NULL||columns<=0||rows<=0)  
        return;  
    int start=0;  
    while(columns>start*2&&rows>start*2)  
    {  
        printMatrix(matrix,columns,rows,start);  
        start++;  
    }  
}  

int main()  
{  
    int n,m;  
    while(scanf("%d %d",&n,&m)!=NULL)  
    {  
        int **numbers;  
        int i,j;  
        numbers=(int **)malloc(sizeof(int *)*n);//n rows  
        for(i=0;i<n;i++)  
            numbers[i]=(int *)malloc(sizeof(int)*m);//m columns  
        for(i=0;i<n;i++)  
            for(j=0;j<m;j++)  
                scanf("%d",&numbers[i][j]);  
        matrixClock(numbers,m,n);  
    }  
    return 0;  
}  </pre> 


 本文由用戶 cnp5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!