螺旋矩阵的几种打印形式

#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");
    }
}

这里写图片描述这里写图片描述这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_34875598/article/details/81461889
今日推荐