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 }