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--- "); 17 int i,j; 18 for(i = 1;i<4;i++) 19 { 20 for(j = 0;j<=i;j++) 21 { 22 printf("%d ",arr[i-j][j]); 23 } 24 } 25 printf(" ---扫描顺序 14->10->6->5->15->11->7->16->12--- "); 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 ",arr[i][3-i+j]); 35 } 36 } 37 putchar(10); 38 39 return 0; 40 }