c++输入一组数列让后m个数移动到前面数组最开头处怎么编程

是这样的,想请教下,c++输入一组数列让后m个数移动到前面数组最开头处怎么编程
最新回答
星月满屋

2024-11-06 03:33:10

#include<iostream>
using namespace std;
void move(int a[],int begin,int n)
{
    int *brr=new int [n];//C++支持动态数组
    int i;
    for(i=0;i<n;i++)
        brr[i]=a[begin+i-1]; //注意:因为数组从0开始,位置m实际操作数为m-1
    for(i=begin-2;i>=0;i--) //此处的m-2即m前一个数的实际位置
        a[i+n]=a[i];
    for(i=0;i<n ;i++)
        a[i]=brr[i];
    delete[] brr;    
}
int main(void)
{
int arr[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int m,n;
int len=sizeof(arr)/sizeof(arr[0]);
cout<<"len:"<<len<<endl;
cout<<"输入从位置m开始,移动的n个数:m=,n=";
scanf("%d%d",&m,&n);  
// 实际应用中此处应当加入判断m,n是否符合操作要求,不能超出数组大小之类的
move(arr,m,n);
for(int i=0;i<15;i++)
    cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
爱是一场闹剧

2024-11-06 03:32:14

#include<iostream>
#include<algorithm>
using namespace std;
void RightShift(int *arr, int N, int K) //循环右移k位
{
while(K--)
{
int t = arr[N-1];
for(int i = N-1;i>0;i--)
{
arr[i]=arr[i-1];
}
arr[0]=t;
}
}
int main()
{
int a[100];
int m,Length;
cout<<"请输入数列"<<endl; //输入数列
for(int i=0;i<100;i++)
{
cin>>a[i];
if (getchar()=='\n')
{
Length=i+1;
break;
}
}
cout<<"输入m"<<endl;
cin>>m; //输入移动个数m
RightShift(a,Length,m); //循环右移k位

for(int i=0;i<Length;i++) //输出最终数组
{cout<<a[i]<<" ";}

return 0;
}