首页
登录 | 注册

矩阵问题之//矩阵旋转//一道找规律的题

问题 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;
}


2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.008 s.
京ICP备10005923号