• 二维数组环形打印,亲自调试


    /*先把数据依照打印格式打印到二维数组中,然后输出二维数组就可以

     *时间复杂度 O(N*M)

     *空间复杂度O(N*M)

    */


    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int  input(void);
    void contral(int **arry,int col,int row);
    void set_value(int**a,int col,int row, int start);
    void print(int **arry,int col,int row);
    
    int main(void)
    {
        int col,row;
        int **a;
        int i;
        printf("input the col,row:");
        scanf("%d%d",&col,&row); 
        //申请二维数组
        a=(int **)malloc(sizeof(int*)*col);
        for(i=0;i<col;i++)
          a[i]=(int *)malloc(sizeof(int)*row);
          
        contral(a,col,row);
        print(a,col,row);
        return 0;
    }
    
    void contral(int **arry,int col,int row)
    {
          int start=0;
          while(col>start*2&&row>start*2)
          {
             set_value(arry,col,row,start);
             start++;
          } 
    }
    void set_value(int**a,int col,int row, int start)
    {
      int endX=row-1-start;
      int endY=col-1-start;
      int i;
      static int temp=1;
      //第一行,从右到左
      for(i=start;i<=endX;i++)
        {
              a[start][i]=temp;
              temp++;
        }
      //第二列,从上到下
      if(start<endY)
      {
         for(i=start+1;i<endY;i++)
          {
              a[i][endX]=temp;
              temp++;  
          } 
      }
      //打印第三行 从左到右
      if(start<endX&&start<endY)
      {
         for(i=endX;i>=start;i--)
          {
                a[endY][i]=temp;
                temp++;
          } 
      }
      //打印第四列,从下到上
      if(start<endX&&start<endY-1)
      {
         for(i=endY-1;i>=start+1;i--)
         {
           a[i][start]=temp;
           temp++;
         }
      }  
    }
    void print(int **arry,int col,int row)
    {
       int i,j;
       for(i=0;i<col;i++)
       {
         for(j=0;j<row;j++)
          {
             printf("%4d ",arry[i][j]);
          }
          printf("
    ");
       }
    }
    程序执行结果:

    [trageday@lei-yum code_test]$ gcc -o print_cir_arry print_cir_arry.c
    [trageday@lei-yum code_test]$ ./print_cir_arry 
    input the col,row:5 5
       1    2    3    4    5 
      16   17   18   19    6 
      15   24   25   20    7 
      14   23   22   21    8 
      13   12   11   10    9 



  • 相关阅读:
    iOS7 自己定义动画跳转
    Android开发之用双缓冲技术绘图
    postgres 使用存储过程批量插入数据
    渗透过程
    python pytesseract使用
    排序算法比较
    python算法
    python中PIL模块
    数字电路复习
    windows服务参考
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7080786.html
Copyright © 2020-2023  润新知