C语言实现数字旋转方阵
时间: 2024-10-13 17:04:47 浏览: 28
数字旋转方阵 分治法——C++代码
5星 · 资源好评率100%
在C语言中,实现数字矩阵的顺时针或逆时针旋转可以采用数组操作和临时变量的方法。这里以90度旋转为例,假设我们有一个二维整数数组代表矩阵。以下是顺时针旋转的过程:
```c
#include <stdio.h>
void rotate(int matrix[rows][cols], int rows, int cols) {
if (rows != cols) {
// 如果矩阵不是正方形,无法直接旋转90度
printf("无法对非正方形矩阵进行90度旋转.\n");
return;
}
int temp[rows];
// 首先将第一行复制到临时数组
for (int i = 0; i < rows; i++) {
temp[i] = matrix[i][0];
}
// 然后逐行填充原矩阵,从第二行开始
for (int i = 1; i < rows; i++) {
for (int j = i; j >= 0; j--) {
matrix[j][rows - 1 - i] = matrix[j][i];
}
}
// 最后将临时数组的内容填回矩阵顶部
for (int i = 0; i < rows; i++) {
matrix[i][0] = temp[i];
}
}
// 测试函数
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
int rows = sizeof(matrix) / sizeof(matrix[0]);
rotate(matrix, rows, rows);
// 打印旋转后的矩阵
for (int i = 0; i < rows; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文