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 }