请写一段简单的c++系统程序,要求如下: 有n(n<=10)个整数,使前面各数顺序向后移m (m<=n)个位置,最后m个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。
时间: 2024-05-10 14:16:00 浏览: 132
以下是实现要求的C++程序:
```c++
#include <iostream>
using namespace std;
void shift(int a[], int n, int m) {
int temp[m];
for (int i = n - m, j = 0; i < n; i++, j++) {
temp[j] = a[i];
}
for (int i = n - m - 1; i >= 0; i--) {
a[i + m] = a[i];
}
for (int i = 0; i < m; i++) {
a[i] = temp[i];
}
}
int main() {
int n, m;
cout << "请输入n和m(n<=10,m<=n):";
cin >> n >> m;
int a[n];
cout << "请输入" << n << "个整数:";
for (int i = 0; i < n; i++) {
cin >> a[i];
}
shift(a, n, m);
cout << "调整后的" << n << "个数为:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}
```
程序中,先定义了一个shift函数,该函数接收三个参数:整型数组a、数组元素个数n和需要向后移动的位置数m。函数的具体实现如下:
1. 定义一个大小为m的临时数组temp,用于存储数组a中后m个元素。
2. 将数组a中的后m个元素复制到temp数组中。
3. 遍历数组a,从n-m-1位置开始,将元素依次向后移动m个位置。
4. 将temp数组中的元素复制到数组a的前m个位置,即完成数组元素的移动。
在主函数中,先输入n和m,再输入n个整数,并调用shift函数进行数组元素移动。最后,输出调整后的n个数。
阅读全文