图像旋转
题目描述
输入一个 n n n 行 m m m 列的黑白图像,将它顺时针旋转 90 90 90 度后输出。
输入格式
第一行包含两个整数 n n n 和 m m m,表示图像包含像素点的行数和列数。 1 ≤ n ≤ 100 1 \le n \le 100 1≤n≤100, 1 ≤ m ≤ 100 1 \le m \le 100 1≤m≤100。
接下来 n n n 行,每行 m m m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在 0 ∼ 255 0 \sim 255 0∼255 之间。
输出格式
m m m 行,每行 n n n 个整数,为顺时针旋转 90 90 90 度后的图像。相邻两个整数之间用单个空格隔开。
样例 #1
样例输入 #1
3 3
1 2 3
4 5 6
7 8 9
样例输出 #1
7 4 1
8 5 2
9 6 3
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
//此题的思想是先将矩阵逆置,然后再将每行元素倒置即刻
int main(){
int num1[101][101],num2[101][101],m,n,temp;
int i,j;
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
scanf("%d",&num1[i][j]);
}
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
num2[j][i]=num1[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m/2;j++){
temp=num2[i][j];
num2[i][j]=num2[i][m-j+1];
num2[i][m-j+1]=temp;
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
printf("%d ",num2[i][j]);
}
printf("\n");
}
return 0;//csdn:旺旺的碎冰冰~
}