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

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

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


你可能感兴趣的:(面试题20:顺时针打印矩阵 ***)