分享

【原创】矩阵交换行

 计算机知识杂谈 2021-06-27
描述

给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。

输入
输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。
第6行包含两个整数m、n,以一个空格分开。(1 <= m,n <= 5)
输出
输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。
样例输入
样例输出
来源
题目分析:
我们知道这题要用二维数组来写
但是对行的交换,我们可以用一种特殊的方法。
标准库里,有一个函数叫做memcpy,作用是进行数组的拷贝。
memcpy(int *dest, int *src, int size)
作用是把src数组开始size个元素拷贝到dest数组中
因为是数组,传递函数参数时需要用指针传递。
但是一定有人会问
“但是我们使用的是二维数组,无法把行单独取出来进行参数传递来拷贝”
那你就错了
二维数组长这样
(图画的不是很好,见谅)
 
 
 
  
 实际上,这个多维数组可以看成是“数组的数组”,也就是由4个一维数组构成的数组。
所以,如果我们定义了一个数组a[5][5]
其中,这个数组有五个一维数组组成,分别是a[0],a[1],a[2],a[3],a[4]。
每一个数组都可以拿出来当作一维数组进行使用。
所以,回到题目,我们进行行的交换,实际上只需要将一维数组进行交换即可。
最核心的部分如下:(注意数组的下标和行列差1,所以需要将x,y减去1)
  1. cin>>x>>y;  
  2. --x;--y;  
  3. int temp[100];  
  4. memcpy(temp,a[x],100);  
  5. memcpy(a[x],a[y],100);  
  6. memcpy(a[y],temp,100);  
 
剩余部分的代码应该很简单,在此就不挂出来了,就是数组的读入和输出而已。
完。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多