题解 | #矩阵交换#

矩阵交换

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;
}
全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务