有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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数
原文地址:http://blog.csdn.net/yanglize/article/details/48037539