1.题目描述
输入一个n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。
2.输入格式
第一行包含两个整数 n和 m,表示图像包含像素点的行数和列数。1 <=n<= 100,1<=m < =100。接下来 n行,每行 m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~ 255 之间。
3.输出格式
m 行,每行 n 个整数,为顺时针旋转 90 度后的图像。相邻两个整数之间用单个空格隔开。
4.输入输出样例:
输入1:
3 3
1 2 3
4 5 6
7 8 9
输出2:
7 4 1
8 5 2
9 6 3
5.代码:
#include <stdio.h>
int main() {
int n, m;
// 读取行数和列数
scanf("%d %d", &n, &m);
int image[100][100]; // 存储原始图像
int rotated[100][100]; // 存储旋转后的图像
// 输入图像数据
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &image[i][j]);
}
}
// 旋转图像:顺时针旋转90度
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
rotated[j][n - 1 - i] = image[i][j];
}
}
// 输出旋转后的图像
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (j > 0) {
printf(" "); // 在每个元素前加空格,除了第一个元素
}
printf("%d", rotated[i][j]);
}
printf("\n"); // 每行结束后换行
}
return 0;
}