题解 | #矩阵交换#

矩阵交换

http://www.nowcoder.com/practice/ec44d4ff8c794b2f9205bdddbde96817

#include<stdio.h>
#include<malloc.h>
void swap(int *a,int *b)//设置一个交换的函数
{
    int temp=*a;
    *a=*b;
    *b=temp;
}
int main(void)
{
    int n,m;
    int k;
    scanf("%d %d",&n,&m);
    int **num=(int **)malloc(sizeof(int *)*n);
    for(int i=0;i<n;i++)
        num[i]=(int *)malloc(sizeof(int)*m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            scanf("%d",&num[i][j]);
    scanf("%d",&k);
    char *os=(char *)malloc(sizeof(char)*k);
    int **hos=(int **)malloc(sizeof(int *)*k);
    for(int i=0;i<k;i++)
        hos[i]=(int *)malloc(sizeof(int)*2);
    for(int i=0;i<k;i++)//注意要输入字符时,如果直接接收,很有可能接收前面输入的回车换行,所以用getchar()吸收掉
    {
        getchar();
        scanf("%c %d %d",&os[i],&hos[i][0],&hos[i][1]);
    }
    for(int i=0;i<k;i++)
    {
        
        switch(os[i])
        {
            case 'r':
                {
                    for(int j=0;j<m;j++)//如果是r,则进行行交换,
                        swap(&num[hos[i][0]-1][j],&num[hos[i][1]-1][j]);
                    break;
                }
            case 'c':
                {
                    for(int j=0;j<n;j++)//如果是c,则进行列交换
                        swap(&num[j][hos[i][0]-1],&num[j][hos[i][1]-1]);
                    break;
                }
            default:
                break;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
            printf("%d ",num[i][j]);
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务