20200926--图像旋转(奥赛一本通P96 9 多维数组)

输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。

输入:第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示图像包含像素点的行数和列数。

接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在1-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 <bits/stdc++.h>

using namespace std;

int a[101][101];

int n,m;//分别代表像素点的行数和列数

int main()

{

 //数据输入

  scanf("%d %d",&n,&m);//注意%d之间有空格,没有也行,因为没那么严格,但原题有要求的话,一定要留有空格

  for(int i=1;i<=n;i++)

   {  for(int j=1;j<=m;j++)

        {scanf("%d",&a[i][j]);}

   }

   //从第一列到最后一列,从最后一行到第一行的规律输出

    for(int i=1;i<=m;i++)

     {     for(int j=n;j>0;j--)

             {printf("%d ",a[j][i]);}

             printf(" ");

    }

  return 0;

}

原文地址:https://www.cnblogs.com/whcsrj/p/13737069.html