有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,写一函数实现以上功能,在主函数中输入n个整数,并输出10个数。
- #include <iostream>
- #include<cmath>
- #include<iomanip>
- #include<string>
- using namespace std;
- int main()
- {
- void weiyi(int *,int,int);
- int n;
- int a[20];
- int *p=a,m,i;
- cout<<"一共多少个数?:";
- cin>>n;
- cout<<"$混沌系统为你服务$"<<endl<<endl;
- cout<<"输入数据:";
- for(i=0;i<n;i++)
- cin>>*(p+i);
- cout<<"请输入数字位移数:";
- cin>>m;
- weiyi(a,n,m);
- for(p=a;p<a+n;p++)
- cout<<*p<<" ";
- cout<<endl;
- }
- void weiyi(int *p,int n,int m)
- {
- int b[20]; // 【p1p1p1p1p1p1p1p1p1p1】
- int *p2=b,i;
- i=0;
- for(p2=b;p2<b+m;p2++)//移动第m个数后面的去p2【p1p1p1p1p1】【p2p2p2】
- {
- *(p2)=*(p+(n-m)+i);
- i++;
- }
- for(i=n-m-1;i>=0;i--)//m位前的数顺位移动。填补移动后的空白【XXXXXX】【p1p1p1p1p1】
- *(p+i+m)=*(p+i);
- p2=b;
- for(i=0;i<m;i++)//填补m位前移动后的空白。将p2的填充上去【XXXXXX】【p1p1p1p1p1】——》 【p2p2p2】【p1p1p1p1p1】
- *(p+i)=*(p2+i);
- }