习题 6.4 有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。
尽量都用指针,而不用下标来访问数组
代码:
#include<iostream>
using namespace std;
int main(void)
{
void turnBack(int*, int, int);
int n;
int m;
int a[50];
int* p;
cout << "请输入n" << endl;
cin >> n;
cout << "请输入n个数" << endl;
for (p = a;p != (a + n);++p)
{
cin >> *p;
}
cout << "请输入m" << endl;
cin >> m;
turnBack(a, n, m);
for (p = a; p != (a + n); ++p)
{
cout<< *p;
}
cout << endl;
return 0;
}
void turnBack(int *a,int n,int m)
{
int* p;
int b[50];
int* q ;
for (p = (a + n - m),q = b; p != (a + n); ++p, ++q) //将原数组的m到n存到临时数组b中
{
*q = *p;
}
for (p = a; p != (a + n - m); ++p) //将原数组前n-m位后移m位
{
*(p + m) = *p;
}
for (p = a,q = b; p != (a + m); ++p, ++q) //将临时数组b中的m位移到原数组的前m位
{
*p = *q;
}
}