(C++)有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
#include
using namespace std;
int main() {
void move(int*, int, int);
int number[20], m, n, i;
cout << "how many number?" << endl;
cin >> n;
cout << "input " << n << "nubers:" << endl;
for ( i = 0; i < n; i++)
{
cin >> number[i];
}
cout << "how many places do you want move?";
cin >> m;
move(number, n, m);
cout << "now,they are :" << endl;
for ( i = 0; i < n; i++)
{
cout << number[i] << " ";
}
cout << endl;
return 0;
}
void move(int *array,int n,int m) {
int* p, array_end;
//将数组最后一位的值赋给array_end
array_end = *(array + n - 1);
for ( p = array+n-1; p > array; p--)
{
//将数组的n个元素逐个循环往后移一位,从最后一位开始
*p = *(p - 1);
}
//将原数组末尾的元素赋给新的数组首元素位置
*array = array_end;
//总共移动m次,每移动一次m减1,以此完成n个元素向后移动m位
m--;
if (m > 0) move(array, n, m);
}