/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:李晓凯
* 完成日期:2014年 12 月 28 日
* 版 本 号:v1.0
*
* 问题描述:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,
* 输入描述:输入一个数,代表元素数,并输入元素,在输入一个数,代表要移动的数的个数
* 程序输出:输出移动后的数组
*/
(1)一般方法:
#include <iostream>
using namespace std;
int main()
{
int n,i,m;
int a[100];
cin>>n;
for(i=0; i<n; i++)
cin>>a[i];
cin>>m;
for(i=n-m; i<n; i++)
cout<<a[i]<<" ";
for(i=0;i<n-m;i++)
cout<<a[i]<<" ";
return 0;
}
(2)指针做形参法:
#include <iostream>
using namespace std;
void mv(int *,int ,int );
int main()
{
int a[80];
int m,i,n;
cin>>n;
for(i=0; i<n; i++)
cin>>a[i];
cin>>m;
mv(a,n,m);
for(i=0; i<n; i++)
cout<<a[i]<<" ";
return 0;
}
void mv(int *a,int b,int c)
{
int i,t[100],j=0;
for(i=b-c;i<b;i++,j++)
t[j]=*(a+i);
for(i=0,j=0;i<b-c;i++,j++)
t[j+c]=*(a+i);
for(i=0;i<b;i++)
*(a+i)=t[i];
}