简单记录一下
描述
输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。
输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。
样例输入
3 3 1 2 3 4 5 6 7 8 9
样例输出
7 4 1 8 5 2 9 6 3
代码如下:
#include<stdio.h>
int main()
{
//简单将一个矩阵中的元素赋给另一个矩阵;
int m, n;
scanf("%d %d", &m, &n);
int a[105][105], b[105][105];
int i, j, k;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
scanf("%d", &a[i][j]);/*输入 a 矩阵 ;
a 矩阵为 m行 n列,即知b 矩阵为 n行 m列*/
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
b[j][m-1-i] = a[i][j];/* a 矩阵的第一行 即为 b 矩阵的最后一列,
推广即得 a 矩阵的第 i 行(ps:i从 0 开始) 为 b 矩阵的第 m-i列;
注意要以行和列为单位操作*/
for (i = 0; i <= n - 1; i++)
for (j = 0; j <= m - 1; j++)
{
printf("%d ", b[i][j]);
if (j == m - 1)printf("\n");
}
return 0;
}