C++实现矩阵循环左移:`rotateleft`函数解析与完整代码示例
这段代码实现了一个矩阵循环左移的功能。以下是代码的详细解释和对`rotateleft`函数的实现: 代码结构与功能 1. 主函数 (`main`): - 定义一个100x100的二维数组`a`,用于存储输入的n行n列矩阵。 - 从标准输入读取矩阵的行数`n`和循环左移的位数`m`。 - 输入n*n的矩阵元素,存储在数组`a`中。 - 调用`rotateleft`函数对矩阵进行循环左移操作。 - 输出循环左移后的矩阵。 2. `rotateleft`函数: - 参数: - `a`: 100x100的二维数组,存储n行n列的矩阵。 - `n`: 矩阵的行数和列数。 - `m`: 循环左移的位数(0 < m < n)。 - 返回值:无,结果直接写入原数组`a`。 `rotateleft`函数的实现 为了实现矩阵的循环左移,可以按照以下步骤进行: 1. 计算实际需要移动的位数:由于m可能大于n,因此需要将m对n取模,以确保移动位数在有效范围内。 2. 逐层旋转:对于每一层(即外层到内层),分别进行旋转操作。 3. 保存临时变量:在旋转过程中,使用临时变量保存被替换的元素。 以下是完整的`rotateleft`函数实现: ```cpp void rotateleft(int a[][100], int n, int m) { // 计算实际需要移动的位数 m = m % n; if (m == 0 || n <= 1) return; // 逐层旋转 for (int layer = 0; layer < n / 2; ++layer) { int first = layer; int last = n - 1 - layer; for (int i = 0; i < m; ++i) { int temp = a[first][first]; for (int j = first; j < last; ++j) { a[j][first] = a[j + 1][first]; } for (int j = first; j < last; ++j) { a[last][j] = a[last][j + 1]; } for (int j = last; j > first; --j) { a[j][last] = a[j - 1][last]; } for (int j = last; j > first + 1; --j) { a[first][j] = a[first][j - 1]; } a[first][first + 1] = temp; } } } ``` 注意事项 - 边界条件:当`m`为0或`n`小于等于1时,矩阵不需要旋转,直接返回。 - 逐层旋转:通过逐层处理矩阵的外层到内层,确保每个元素都能正确地移动到目标位置。 - 临时变量:使用临时变量保存被替换的元素,避免数据丢失。 这样实现的`rotateleft`函数可以正确地对矩阵进行循环左移,并将结果保存回原数组`a`中。 ######[AI摘要生成 | 737点数解答 | 2024-12-24 19:13:46]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- C 语言实现链表操作:创建、输出、删除及插入功能详解(字节豆包 | 534点数解答 | 2024-12-09 21:33:48)338
- C语言实现链表创建、输出、删除与插入操作的完整代码及注意要点(字节豆包 | 609点数解答 | 2024-12-18 12:18:21)360
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)24
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)464
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)356
- C++ 实现:轻松计算两个矩阵的乘法并输出结果(字节豆包 | 381点数解答 | 2025-12-03 19:20:23)111
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)9
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)265
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)263
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)278
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)308