这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
题目描述:输入一个矩阵,从外向里顺时针打印矩阵内数字。
输入:矩阵数组(int**)、长(int)、宽(int)
解题思路: 考虑三个参数的特殊情况; 打印一周; 从外向内; 结束条件;
代码实现:
void printNumber(int number) {
printf("%d\n", number);
}
void printMatrixInCircle(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);
}
for (int i = start; i < endY; i++) {
int number = numbers[endX][i];
printNumber(number);
}
for (int i = endX; i >= start; i++) {
int number = numbers[i][endY];
printNumber(number);
}
for (int i = endY; i >= start; i++) {
int number = numbers[start][i];
printNumber(number);
}
}
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) {
printMatrixInCircle(numbers, columns, rows, start);
start++;
}
}