有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数

来源:互联网 发布:淘宝货源免费代理 编辑:程序博客网 时间:2024/06/05 01:40

有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数(要求使用指针)。


#include<iostream>
//#include<vector>
using namespace std;


int n,m;
int array[1000];


void input()
{
cout<<"请输入n的值:"<<endl;
cin>>n;
cout<<"请输入m的值(m小于n):"<<endl;
cin>>m;
cout<<"请输入"<<n<<"个数"<<endl;



for(int i=0;i<n;i++)
{
cin>>array[i];
}
}


void chuli(int a)
{
int *p;
p=array;
 for(int i=a-m;i<a;i++)       //若以m个数为一组,那么这个循环可以完成一组都往前移一位
 {
   int t;
   t=*(p+i);
   *(p+i)=*(p+i-1);
   *(p+i-1)=t;
 } 
 a=a-1;      
 if(a-m>0)
 {
 chuli(a);    //递归,再往前移
 }
}


void output()
{
for(int i=0;i<n;i++)
{
cout<<array[i]<<" ";
}
}


int main()
{
input();
chuli(n);
output();
return 0;
}

0 0
原创粉丝点击