C++:将一个数组的前m个元素和后n-m个元素整体互换位置

笨方法 >_< 

#include <iostream>
using namespace std;
int main()
{   int n,m,i,j;
    int a[100];
    cout<<"请输入要创建数组的长度(不能超过100):"<<endl;
    cin>>n;
    //为数组赋值
    cout<<"请依次输入要存入数组中的元素:"<<endl;
    for(i=0;i<n;i++)
    {cin>>a[i];}
    //输出当前数组
    cout<<"当前数组为:"<<endl<<"[";
    for(i=0;i<n;i++)
    {if (i==n-1) cout<<a[i];
    else cout<<a[i]<<',';}
    cout<<']'<<endl;
    //交换
    cout<<"现将数组的前m个元素与后n-m个元素整体互换位置,请输入m:"<<endl;
    cin>>m;
    //创建数组b,长度为m
    const int x=m;
    int b[x];
    //将数组a的前m个元素暂时存到数组b中
    for(i=0;i<m;i++)
    {b[i]=a[i];}
    //将数组a的后n-m个元素挪到前面
    for(i=0,j=0;i<n-m;i++,j++)
    {a[i]=a[m+j];}
    //将数组b中的元素提取出来,放到数组a的后m个位置
    for(i=0,j=0;i<m;i++,j++)
    {a[n-m+j]=b[i];}
    //交换后输出数组
    cout<<"当前数组为:"<<endl<<"[";
    for(i=0;i<n;i++)
    {if (i==n-1) cout<<a[i];
    else cout<<a[i]<<',';}
    cout<<']'<<endl;
}

老师做滴:

#include<iostream>
using namespace std;

void invert(int R[],int s,int t)
{ int k,w;
for(k=s;k<=(s+t)/2;k++)
{w=R[k];
R[k]=R[t-k+s];
R[t-k+s]=w;
}
}

int main()
{
int A[10],i,m;
cout<<"请输入要存入的10个元素:"<<endl;
for(i=0;i<10;i++)
cin>>A[i];
cout<<"请输入m的值:"<<endl;
cin>>m;

invert(A,0,9);
invert(A,0,9-m);
invert(A,10-m,9);

for(i=0;i<10;i++)
cout<<A[i]<<" ";
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42451835/article/details/82926190