c语言实现输出二维蛇形矩阵


    #include   
    #include   
      
    int main(void)  
    {  
        //用户输入的值,创建n*n的矩阵  
        int n;  
        //蛇形从1开始计数  
        int count = 1;  
        //a[x][y],x是二维数组的第一个下标,y是第二个。  
        //round是蛇形矩阵的第几圈,从0开始。  
        int x,y,round;  
      
        scanf("%d",&n);   
        int (*a)[n] = calloc(n*n,sizeof(int));  
          
        //如果n是1,则直接输出。  
        if(n == 1){  
            a[0][0] = count;  
        }else{  
        //下面以n=5为例  
        //一共有2(5/2)圈蛇形  
        for(round=0; round=round;y--){  
                a[x][y]=count;  
                count++;  
            }  
              
            /* 以下循环执行后输出如下: 
                1  2  3  4  5 
                16          6 
                15          7 
                14          8 
                13 12 11 10 9 
            */  
            y = round;  
            for(x=n-round-1-1;x>round;x--){  
                a[x][y]=count;  
                count++;  
            }  
        }  
        /* 上面的大循环执行后输出如下: 
                1  2  3  4  5 
                16 17 18 19 6 
                15 24    20 7 
                14 23 22 21 8 
                13 12 11 10 9 
            */  
        if(n%2 == 1){  
            //如果n值奇数,将最中间的空填上  
            a[n/2][n/2] = count;  
        }  
        }  
        //打印矩阵  
        for(x=0;x


你可能感兴趣的:(c语言)