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 }