顺时针打印出一个n阶矩阵,矩阵行列相同,传入参数为矩阵阶数,请用C语言实现
时间: 2023-10-06 18:14:57 浏览: 69
以下是实现顺时针打印n阶矩阵的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
void printMatrixClockwise(int matrix[][N], int n) {
int start = 0; // 起始点坐标
while (n > start * 2) { // 循环条件
int endX = n - start - 1; // 终止点横坐标
int endY = n - start - 1; // 终止点纵坐标
// 从左到右打印一行
for (int i = start; i <= endX; i++) {
printf("%d ", matrix[start][i]);
}
// 从上到下打印一列
if (start < endY) {
for (int i = start + 1; i <= endY; i++) {
printf("%d ", matrix[i][endX]);
}
}
// 从右到左打印一行
if (start < endX && start < endY) {
for (int i = endX - 1; i >= start; i--) {
printf("%d ", matrix[endY][i]);
}
}
// 从下到上打印一列
if (start < endX && start < endY - 1) {
for (int i = endY - 1; i >= start + 1; i--) {
printf("%d ", matrix[i][start]);
}
}
start++;
}
}
int main() {
int matrix[N][N];
srand(time(NULL));
// 生成随机矩阵
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
matrix[i][j] = rand() % 100;
}
}
// 打印原始矩阵
printf("Original Matrix:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 打印顺时针矩阵
printf("Clockwise Matrix:\n");
printMatrixClockwise(matrix, N);
return 0;
}
```
在这个代码中,我们首先生成了一个随机的n阶矩阵,然后通过printMatrixClockwise函数实现顺时针打印矩阵。该函数首先确定起始点坐标start,然后在循环条件n > start * 2的前提下,从左到右、从上到下、从右到左、从下到上依次打印矩阵中的每一行或每一列。最后,我们在main函数中调用printMatrixClockwise函数并打印出原始矩阵和顺时针矩阵。
阅读全文