37. 选择性打印二维数组的一面数据。

  1 #include <stdio.h>
  2 
  3 
  4 int main(void)
  5 {
  6     int arr[5][5] = { 1, 2, 3, 4, 5,
  7                       6, 7, 8, 9,10,
  8                      11,12,13,14,15,
  9                      16,17,18,19,20,
 10                      21,22,23,24,25 };
 11     int i,j;
 12 #if 1
 13     for(i=0;i<5;i++)
 14     {
 15         for(j=0;j<5;j++)
 16         {
 17            printf("%d%d ",i,j);
 18          //   printf("%3d",arr[i][j]);
 19         }
 20         putchar(10);
 21     }
 22     putchar(10);
 23 
 24 #endif
 25 
 26 /*打印以对角线为界的半面的数据*/
 27 
 28 #if 0//按数据在内存中存储的线性顺序进行基本遍历,进行筛选打印
 29     //打印主对角线上半面
 30     for(i = 0;i < 5;i++)
 31     {
 32         for(j = 0;j < 5;j++)
 33         {
 34             if(i<j)
 35                 printf("%3d",arr[i][j]);
 36             else
 37                 printf("%3c",' ');
 38         }
 39         putchar(10);
 40     }
 41     putchar(10);
 42     //打印主对角线下半面
 43     for(i = 0;i < 5;i++)
 44     {
 45         for(j = 0;j < 5;j++)
 46         {
 47             if(i>j)
 48                 printf("%3d",arr[i][j]);
 49             else
 50                 printf("%3c",' ');
 51         }
 52         putchar(10);
 53     }
 54     putchar(10);
 55 
 56 
 57     //打印次对角线上半面
 58     for(i = 0;i < 5;i++)
 59     {
 60         for(j = 0;j < 5;j++)
 61         {
 62             if(i+j<4)
 63                 printf("%3d",arr[i][j]);
 64             else
 65                 printf("%3c",' ');
 66         }
 67         putchar(10);
 68     }
 69     putchar(10);
 70     //打印次对角线下半面
 71     for(i = 0;i < 5;i++)
 72     {
 73         for(j = 0;j < 5;j++)
 74         {
 75             if(i+j>4)
 76                 printf("%3d",arr[i][j]);
 77             else
 78                 printf("%3c",' ');
 79         }
 80         putchar(10);
 81     }
 82     putchar(10);
 83 #endif
 84 
 85 #if 0//直接选择性遍历访问。高效
 86     //打印主对角线上半面  //可以横着扫,竖着扫,斜着扫
 87     for(i = 0;i<4;i++)
 88     {
 89         for(j = i+1;j<5;j++)
 90         {
 91             printf("%3d",arr[i][j]);
 92         }
 93         putchar(10);
 94     }
 95     putchar(10);
 96 
 97     //打印主对角线下半面
 98     for(i = 1;i<5;i++)
 99     {
100         for(j = 0;j<i;j++)
101         {
102             printf("%3d",arr[i][j]);
103         }
104         putchar(10);
105     }
106     putchar(10);
107     //打印次对角线上半面
108     for(i = 0;i<4;i++)
109     {
110         for(j=0;j<4-i;j++)
111         {
112             printf("%3d",arr[i][j]);
113         }
114         putchar(10);
115     }
116     putchar(10);
117     //打印次对角线下半面
118     for(i = 1;i<5;i++)
119     {
120         for(j=5-i;j<5;j++)
121         {
122             printf("%3d",arr[i][j]);
123         }
124         putchar(10);
125     }
126     putchar(10);
127 
128 #endif
129 }

 

posted @ 2018-08-18 20:27  2018年8月10日注册  阅读(169)  评论(0编辑  收藏  举报