有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,写一函数实现以上功能,在主函数中输入n个整数,并输出10个数。

 

 
  
  1. #include <iostream>  
  2. #include<cmath>  
  3. #include<iomanip>  
  4. #include<string>  
  5. using namespace std;  
  6.  
  7.  
  8. int main()  
  9. {     
  10.  void weiyi(int *,int,int);  
  11.  int n;  
  12.  int a[20];  
  13.  int *p=a,m,i;  
  14.  cout<<"一共多少个数?:";  
  15.  cin>>n;  
  16.  cout<<"$混沌系统为你服务$"<<endl<<endl;  
  17.  cout<<"输入数据:";  
  18.  
  19.  for(i=0;i<n;i++)  
  20.   cin>>*(p+i);  
  21.  
  22.  cout<<"请输入数字位移数:";  
  23.  cin>>m;  
  24.  
  25.  weiyi(a,n,m);  
  26.  
  27.  for(p=a;p<a+n;p++)  
  28.   cout<<*p<<" ";  
  29.  cout<<endl;  
  30. }  
  31.  
  32. void weiyi(int *p,int n,int m)  
  33. {  
  34.  
  35.  int b[20];              //                  【p1p1p1p1p1p1p1p1p1p1】  
  36.  int *p2=b,i;  
  37.  i=0;  
  38.  for(p2=b;p2<b+m;p2++)//移动第m个数后面的去p2【p1p1p1p1p1】【p2p2p2】  
  39.  {  
  40.   *(p2)=*(p+(n-m)+i);  
  41.   i++;  
  42.  }  
  43.  
  44.    
  45.  
  46.  for(i=n-m-1;i>=0;i--)//m位前的数顺位移动。填补移动后的空白【XXXXXX】【p1p1p1p1p1】  
  47.   *(p+i+m)=*(p+i);  
  48.  
  49.    
  50.  
  51.  
  52.   p2=b;  
  53.  for(i=0;i<m;i++)//填补m位前移动后的空白。将p2的填充上去【XXXXXX】【p1p1p1p1p1】——》 【p2p2p2】【p1p1p1p1p1】  
  54.   *(p+i)=*(p2+i);  
  55.  
  56. }  
  57.