1134 :图像旋转(基础程序设计,二维数组) 题目描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。c语言
时间: 2024-10-13 08:05:44 浏览: 44
详解C++中的一维数组和二维数组
5星 · 资源好评率100%
在C语言中,你可以通过创建一个新的二维数组并交换原数组的元素行和列来实现图像的顺时针旋转90度。由于新矩阵需要保存原来的“上”边元素到新的“右”边,所以算法的关键在于调整元素的位置。下面是一个简单的步骤:
1. 定义两个临时变量`temp`,用于存储当前元素。
2. 使用两层循环,外层循环遍历每一行(从下往上),内层循环遍历这一行的每一个元素(从左往右)。
3. 将当前行的第`i`个元素赋值给`temp`,然后将`temp`放在新的矩阵的`(j, (n-1)-i)`位置,这里`j`表示列索引。
4. 当所有元素处理完毕后,你得到的新二维数组就是原图顺时针旋转90度后的结果。
以下是伪代码示例:
```c
int rotateImage(int matrix[n][m]) {
int n = sizeof(matrix)/sizeof(matrix[0]);
int m = sizeof(matrix[0])/sizeof(matrix[0][0]);
// 创建新矩阵
int rotated[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
rotated[j][n - 1 - i] = matrix[i][j]; // 顺时针旋转
}
}
return rotated;
}
```
阅读全文