二维数组45度反斜线扫描分析。

 1 #include <stdio.h>
 2 /*
 3 反斜线扫描
 4 */
 5 int main(void)
 6 {
 7     int arr[4][5] = {
 8         {1 ,2 ,3 ,4 ,5},
 9         {3 ,4 ,5 ,6 ,7},
10         {8 ,9 ,10,11,12},
11         {13,14,15,16,17}
12     };
13 //扫描顺序 3->2->8->4->3->13->9->5->4       14->10->6->5->15->11->7->16->12
14 //分析:a.特点1:i起始于1结束于3; j起始于0,每次结束不同(总结后:i的起始下标和j的终止下标相同,所以j<=i)由此写出循环
15 //          特点2:i--,j++  总结后打印行的下标为:i-j 由此写出逐个打印的元素
16     printf("---扫描顺序 3->2->8->4->3->13->9->5->4---\n\n");
17     int i,j;
18     for(i = 1;i<4;i++)
19     {
20         for(j = 0;j<=i;j++)
21         {
22             printf("%d\t",arr[i-j][j]);
23         }
24     }
25     printf("\n\n---扫描顺序 14->10->6->5->15->11->7->16->12---\n\n");
26 
27 //扫描顺序 14->10->6->5->15->11->7->16->12
28 //分析:b.特点1:j起始于1结束于3.i起始于3,每次结束不同(总结后:结束于i>=j-1)由此写出循环
29 //          特点2:i--,j++; 总结后打印列的下标为:3-i+j
30     for(j = 1;j<4;j++)
31     {
32         for(i = 3;i>=j-1;i--)
33         {
34             printf("%d\t",arr[i][3-i+j]);
35         }
36     }
37     putchar(10);
38 
39     return 0;
40 }

 

posted on 2018-09-20 15:41  王朝马汉  阅读(259)  评论(0编辑  收藏  举报

导航