螺旋矩阵的几种打印形式

展开

#include<stdio.h>

int a[10][10];

void SpiralMatrix1(int N)//从左上角开始顺时针旋转

{

    int i,j,tp=1;

    for(i=0;i<N/2;i++)//最外层控制圈数

    {

        for(j=i;j<N-1-i;j++)

            if(a[i][j]==0)

                a[i][j]=tp++;

        for(j=i;j<N-1-i;j++)

            if(a[j][N-1-i]==0)

                a[j][N-1-i]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[N-1-i][j]==0)

                a[N-1-i][j]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[j][i]==0)

                a[j][i]=tp++;

    }

    if(N%2==1)

        a[N/2][N/2]=tp;

}

void SpiralMatrix2(int N)//从右上角开始顺时针旋转

{

    int i,j,tp=1;

    for(i=0;i<N/2;i++)

    {

        for(j=i;j<N-1-i;j++)

            if(a[j][N-1-i]==0)

                a[j][N-1-i]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[N-1-i][j]==0)

                a[N-1-i][j]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[j][i]==0)

                a[j][i]=tp++;

        for(j=i;j<N-1-i;j++)

            if(a[i][j]==0)

                a[i][j]=tp++;

    }

    if(N%2==1)

        a[N/2][N/2]=tp;

}

void SpiralMatrix3(int N)//从左上角开始逆时针旋转

{

    int i,j,tp=1;

    for(i=0;i<N/2;i++)

    {

        for(j=i;j<N-1-i;j++)

            if(a[j][i]==0)

                a[j][i]=tp++;

        for(j=i;j<N-1-i;j++)

            if(a[N-1-i][j]==0)

                a[N-1-i][j]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[j][N-1-i]==0)

                a[j][N-1-i]=tp++;

        for(j=N-1-i;j>i;j--)

            if(a[i][j]==0)

                a[i][j]=tp++;

    }

    if(N%2==1)

        a[N/2][N/2]=tp;

}

void main()

{

    int i,j,N;

    printf("请输入N:");

    scanf("%d",&N);

    SpiralMatrix1(N);

    printf("从左上角开始顺时针旋转:\n");

    for(i=0;i<N;i++)

    {

        for(j=0;j<N;j++)

            printf("%-4d",a[i][j]);

        printf("\n");

    }

    for(i=0;i<N;i++)

        for(j=0;j<N;j++)

            a[i][j]=0;

    SpiralMatrix2(N);

    printf("从右上角开始顺时针旋转:\n");

    for(i=0;i<N;i++)

    {

        for(j=0;j<N;j++)

            printf("%-4d",a[i][j]);

        printf("\n");

    }

    for(i=0;i<N;i++)

        for(j=0;j<N;j++)

            a[i][j]=0;

    SpiralMatrix3(N);

    printf("从左上角开始逆时针旋转:\n");

    for(i=0;i<N;i++)

    {

        for(j=0;j<N;j++)

            printf("%-4d",a[i][j]);

        printf("\n");

    }

}

 

螺旋矩阵的几种打印形式_.net螺旋矩阵的几种打印形式_#include_02螺旋矩阵的几种打印形式_螺旋矩阵_03

螺旋矩阵的几种打印形式_.net_04

————————————————

版权声明:本文为博主「LQC_SUSER」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。