问题 C: 矩阵旋转
输入一个N*M的矩阵,要求将这个矩阵右转90度后输出。
例如矩阵:A B C 右转90度后变成: D A
D E F E B
F C
输入
第一行包含两个参数n和m,表示矩阵有n行m列,1<=n,m<=10
接下来输入n行数据,每行包含m个元素,每个元素用字母表示
输出
输出右转90度后的矩阵
样例输入
2 3
A B C
D E F
样例输出
D A
E B
F C
hint:关键在于找到对应关系到规律,你可以把原来没旋转前的数组序号当成x,旋转后的数组序号当成y,以此找到规律。
#include<stdio.h>
int main()
{
int n,m;
char arr[100][100];
scanf("%d%d",&n,&m);
getchar();
/*考试时一定要注意如果前面输入的数字后面是字符一定要加getchar()*/
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%c",&arr[i][j]);
getchar();
/*这里要加getchar()是因为上一个字符输入后scanf'遇到空格或回车结束空格和回车不录入上一个字符,但会空格会留在缓存区放到下一个字符,如果是整数输入就没这个问题因为%d根本不识别空格*/
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%c",arr[(n-1)-j][i]);
/*这道题的关键自己总结规律,行列交换*/
if(j!=(m-1))
printf(" ");
/*常用输出格式技巧*/
}
printf("\n");
}
printf("\n");
return 0;
}