题目:输入一个矩阵,按照从外向里以顺时针的顺序一次打印出每个数字,例如
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则一次打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
关键:看起来比较复杂,分清思路,先整体后局部分析
源代码
#include "stdio.h" #include "stdlib.h" void main() { //int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; //int a[3][4]={{1,2,3,4},{9,10,11,12},{13,14,15,16}}; //int a[4][3]={{1,2,3},{5,6,7},{9,10,11},{13,14,15}}; int a[4][3]={{1,2,3},{5,6,7},{9,10,11}}; int rmin=0,rmax=2,cmin=0,cmax=2; int i; while(rmin <= rmax && cmin <= cmax) { for(i=cmin;i<=cmax;i++) printf("%d ",a[rmin][i]); rmin++; for(i=rmin;i<=rmax;i++) printf("%d ",a[i][cmax]); cmax--; if(rmin<rmax) { for(i=cmax;i>=cmin;i--) printf("%d ",a[rmax][i]); rmax--; } if(cmin<cmax) { for(i=rmax;i>=rmin;i--) printf("%d ",a[i][cmin]); cmin++; } } }