顺时针打印矩阵

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

则依次打印出:1,2,3 ,4,8,12,16,15,14,13,9,5,6,7,11,10.

主要程序如下:

void PrintMatrixClockwisely(int **numbers,int columns,int rows)

{

if(numbers==NULL||columns<=0||rows<=0)//保证传入的

return;

int start=0;

while(columns>start*2&&rows>start*2)

{

printMartixInCircle(numbers,columns,rows,start)

++start;

}
}

void  printMartixInCircle(int **numbers,int columns,int rows,int start)//主体思想分四步走

{

int endX=columns-1-start;

int endY=rows-1-start;

}

for(int i=start;i<=endX;++i)//从左到右打印一行//第一步

{

int number=numbers[start,i];

printNumber(number);

}

if(start<endY)//保证不只一行,如果只有一行就没有后面的事了,最少2行一列//第二步

{

for(int i=start+1;i<=endY;i++)

{

int number=numbers[i][endX]

printNumber(number);

}

}

if(start<endX&&start<endY)//不仅不只一行,还要不只一列,最少要两行两列//第三步

{

for(int i=endX-1;i>=start;i--)

{

int number=numbers[endY][i];

printNumber(number);

}

}

if(start<endX&&start<endY-1)//保证至少是三行两列//第四步

{

for(i=endY-1;i>=start+1:--i)

int number=numbers[i][start];

printNumber(number);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>