设为首页 加入收藏

TOP

顺时针打印矩阵
2015-07-16 12:56:32 来源: 作者: 【 】 浏览:3
Tags:时针 打印 矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,如果输入如下矩阵:
1? 2? 3? 4
5? 6? 7? 8
9? 10? 11? 12
13 14? 15? 16


则依次打印出数字1、2、3、4、8、12、16、15、12、13、9、5、6、7、11、10。


//顺时针打印矩阵
void PrintMatrixClockwisely(int **numbers, int columns, int rows)
{
?if (numbers==NULL||columns<=0||rows<=0)
? ? return;
?//开始位置标示,每圈开始坐标为(start,start)
?int start=0;
?while(columns>2*start&&rows>2*start)
?{
? //从(start,start)开始,顺时针打印一圈
? PrintMatrixInCircle(numbers,columns,rows,start);
? start++;
?}
}


//顺时针打印一圈
void PrintMatrixInCircle(int **numbers, int columns, int rows, int start)
{
?int i;
?int endX=columns-1-start;
?int endY=rows-1-start;
?//从左到右打印一行
?for (i=start; i<=endX; i++)
?{
? printf("%d\t",numbers[start][i]);
?}
?if (start?{
? //从上到下打印一列
? for (i=start+1; i<=endY; i++)
? {
? ?printf("%d\t",numbers[i][endX]);
? }
?}
?if (start?{
? //从右到左打印一行
? for (i=endX-1; i>=start; i--)
? {
? ?printf("%d\t",numbers[endY][i]);
? }
?}
?if (start?{
? //从下到上打印一列
? for (i=endY-1; i>start; i--)
? {
? ?printf("%d\t",numbers[i][start]);
? }
?}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇包含min函数的栈 下一篇Neo4j创建自动索引

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: