面试题20:顺时针打印矩阵 ***

来源:互联网 发布:照片调色软件 编辑:程序博客网 时间:2024/05/17 02:01

题目:输入一个矩阵,按照从外向里以顺时针的顺序一次打印出每个数字,例如

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++;}}}