输入两个正整数 n 和 m (1<m<n<=10),再输入 n 个整数,将这些数排成一行,向右循环移动 m 个位置(从右边移出的数再从左边移入),最后输出移动后的n个整数。 要求定义并调用函数 mov(x,n,m) 实现上述循环移动的功能,函数形参x的类型是整型指针,形参n和m的类型是int,函数的类型是void。 输出格式:数据之间以空格分隔,最后一个数据集后面没有空格c++代码实现
时间: 2024-01-22 19:21:02 浏览: 119
给定一个数列,用快速排序算法把它排成升序
4星 · 用户满意度95%
以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
void mov(int* x, int n, int m) {
int temp[m]; // 创建一个临时数组,存储需要向右移动的元素
for (int i = 0; i < m; i++) {
temp[i] = *(x + n - m + i); // 将需要向右移动的元素存入临时数组中
}
for (int i = n - m - 1; i >= 0; i--) {
*(x + i + m) = *(x + i); // 将剩余的元素向右移动 m 个位置
}
for (int i = 0; i < m; i++) {
*(x + i) = temp[i]; // 将临时数组中的元素放到数组最前面
}
}
int main() {
int n, m;
cin >> n >> m;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
mov(a, n, m);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}
```
输入示例:
```
7 3
1 2 3 4 5 6 7
```
输出示例:
```
5 6 7 1 2 3 4
```
阅读全文