1、盲听C哈说
哈喽,大家好,我是小C,一个每天嘻嘻哈哈的斜杠女青年。一直受一句话的影响 — "你关注的人,决定你看到的世界!" 今天个人有些事情要处理,忙到现在才更新,现在是2024年12月22日晚上21点,距离过年只剩一个多月了,总想在今年最后阶段留下些什么,今天给大家分享一道关于二维数组知识点的习题 — 矩阵交换行。
矩阵行交换是指将矩阵中的两行位置进行互换的操作。
2、问题描述
(1)题目描述
给定一个5×5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。
(2)输入描述
输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开
第6行包含两个整数m、n,以一个空格分开(1≤m,n≤5)。
(3)输出描述
输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。
(4)样例输入
1 2 2 1 2
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
3 0 8 2 4
1 5
(5)样例输出
3 0 8 2 4
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
1 2 2 1 2
3、问题分析
这道题重点在考察学生对矩阵行和列基本概念的理解,实际上就是交换指定的两行元素,仔细想一想,在交换两行元素的时候怎么通过循环来遍历要交换的每一个数据元素,用样例来说明,交换矩阵的第1行和第5行,如下:
我们发现,在当m=1,n=5时,意味着要交换矩阵的第1行和第5行,假设该二维矩阵名为a,即交换如下对应的元素:
核心伪代码可以这样子写:
更具体来说,编写此题代码可以分为以下几个步骤:
本题考察了对数组和矩阵的基本操作,包括读取、存储和修改。用任何一种编程语言都能够实现程序功能,在这里,使用C++代码来实现。
4、代码实现
#include<bits/stdc++.h> // 包含C++标准库的所有头文件,用于简化代码编写
using namespace std; // 使用标准命名空间,这样可以直接使用cout、cin等而不需要std::前缀
// 定义一个10x10的整数数组a,两个整数n和m用于存储输入的行索引,一个整数temp用于临时存储值
int a[10][10], n, m, temp;
int main() // 主函数入口
{
// 读取5x5矩阵的元素
for(int i=1; i<=5; i++) // 外层循环控制行,从1到5(包括5)
{
for(int j=1; j<=5; j++) // 内层循环控制列,从1到5(包括5)
{
cin >> a[i][j]; // 读取矩阵的当前元素
}
}
// 读取需要交换的两行的索引
cin >> n >> m; // 读取两个整数n和m,分别代表需要交换的两行的索引
// 交换第n行和第m行的元素
for(int i=1; i<=5; i++) // 循环控制列,从1到5(包括5)
{
temp = a[m][i]; // 临时存储第m行第i列的元素
a[m][i] = a[n][i]; // 将第n行第i列的元素赋值给第m行第i列
a[n][i] = temp; // 将临时存储的元素赋值给第n行第i列,完成交换
}
// 输出交换后的矩阵
for(int i=1; i<=5; i++) // 外层循环控制行,从1到5(包括5)
{
for(int j=1; j<=5; j++) // 内层循环控制列,从1到5(包括5)
{
cout << a[i][j] << " "; // 输出矩阵的当前元素,并在元素之间添加空格
}
cout << endl; // 每输出一行后换行
}
return 0; // 程序正常结束
}
这段代码的主要功能是读取一个5x5的矩阵,然后根据用户输入的两行索引,交换这两行的位置,并输出交换后的矩阵。这里假设矩阵的索引是从1开始的,这是在数学和编程中常见的约定。
5、OJ测试
大家写完代码之后如果想要做OJ(在线评测)测试,可以找我要相关的链接,电脑自动评测会更加准确~,也可以找我要相关的经典必刷题单(ps:教学经验中总结出来的必刷题单,真的是一步一步试错得到的经验,难怪人家总是说实践出真知),还是那句话,你关注的人,决定你看到的世界,好了,今天这篇文章就讲到这里,我们下期再见~