概述
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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>
void PrintCircle(int num[3][3],int col,int row,int start)
{
//把数组看成一些圈,随着打印圈缩小
int endX=col-1-start;
int endY=row-1-start;
//从左到右打印
int i=start;
for(i;i<=endX;++i)
{
int number=num[start][i];
printf("%dt",number);
}
//从上到下打印
//起始列必须小于终止列
if(start<endY)
{
int i=start+1;
for(i;i<=endY;++i)
{
int number=num[i][endX];
printf("%dt",number);
}
}
//从右到左打印
//终止行及终止列必须大于起始行起始列
//至少两行两列
if(start<endX&&start<endY)
{
int i=endX-1;
for(i;i>=start;--i)
{
int number=num[endY][i];
printf("%dt",number);
}
}
//从下到上打印
//至少三行两列
//终止行比起始行大2,终止列比起始列大
if(start<endX&&start<endY-1)
{
int i=endY-1;
for(i;i>=start+1;--i)
{
int number=num[i][start];
printf("%dt",number);
}
}
}
void Print(int num[3][3],int col,int row)
{
if(num==NULL||col<=0||row<=0)
return ;
int start=0;
while(col>(start*2)&&row>(start*2))
{
PrintCircle(num,col,row,start);
++start;
}
printf("n");
}
int main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
Print(a,3,3);
return 0;
}
最后
以上就是不安皮带为你收集整理的【剑指offer】——顺时针打印矩阵的全部内容,希望文章能够帮你解决【剑指offer】——顺时针打印矩阵所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复